2017-07-16 6 views
0

Ich versuche zu lernen, wie man eine Website mit web.py neu erstellt, aber ich habe Probleme, die Syntax zu finden, die ich brauche.Wie html im tempate mit webpy (2.7) aufgerufen wird

In jeder anderen Sprache, die ich verwendet habe, einschließlich reinem HTML, gibt es eine Möglichkeit, HTML in einer Webseite darzustellen, indem man ein Skript, ein Objekt, ein Paket oder eine Ansicht aufruft, um die Dinge etwas modular zu halten. Wie mache ich das mit Python?

Ich wäre in Ordnung alle Nicht-Layout-Dateien in das statische Verzeichnis neu zu ordnen, umschreiben sie als Python-Dateien, die irgendwie schreiben und zurückgeben, oder einschließlich der Unterdateien in der URL-Behandlung, wenn es eine Möglichkeit gibt und lade sie so in den html.

Ich hatte gehofft, ein .py zu nennen, um ein Skript auszuführen, das den HTML-Code schreiben oder aufrufen würde, den ich für diesen Abschnitt benötige, aber ich kann keine Beispiele finden, die meine Bedürfnisse erfüllen.

Vielen Dank im Voraus, für irgendwelche Vorschläge.

jetzt mein Code sieht ungefähr so ​​aus: code.py

import web 

urls = (
    '/favicon.ico', 'icon', 
    '/', 'index', 
    '/index', 'index' 
) 

app = web.application(urls, globals(), autoreload=True) 
render = web.template.render('templates/')#, base='Layout') 
static = web.template.render('static/') 
Main = web.template.render('templates/') 
MainContent = web.template.render('Content/') 

class static: 
    def GET(self): 
     return static() 

class icon: 
    def GET(self): 
     return static.favicon() 

class index: 
    def GET(self): 
     return Main.Layout(0, 0, 'Main.css') 

if __name__ == '__main__': 
    app.run() 

/templates/Layout.html

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <link href="static/$vCSS" rel="stylesheet" type="text/css"> 
</head> 
<body id="idBody"> 
    <table id="idTableMain"> 
     <tr id="idHeaderRow"> 
      <td id="idHeaderRowCenter" colspan="3"> 
       <img src="static/logo.jpg"/> 
      </td> 
     </tr> 
     <tr id="idNavigationRow"> 
      <td id="idNavigationBar" colspan="3"> 
       <!--Display /templates/NavBar.html --> 
      </td> 
     </tr>    
     <tr id="idCenterRow"> 
      <td id="idCenterRowLeft"> 
       <h4> 
        Navigation 
       </h4> 
       <!--Display /templates/Navigation.html --> 

      </td> 
      <td id="idCenterRowMain"> 
       <!--Display /templates/Content/Content_index.html --> 
      </td> 
      <td id="idCenterRowRight"> 
       <h4> 
        Information 
       </h4> 
       This was written with Python.<br><br> 
       Other versions of this page are here:<br> 
       <!--Display /templates/Versions_index.html --> 
      </td> 
     </tr> 
     <tr id="idFooterRow"> 
      <td id="idFooterMain" colspan="3"> 
       <!--Display /templates/Footer.html --> 
      </td> 
     </tr> 
    </table> 
</body> 
</html> 
+0

die Beispiele mit web.py Dokumentation folgen, dann kommen Sie wieder mit einer spezifischeren Frage. – pbuck

+0

diejenigen, die ich gefunden habe, decken dies nicht ab. Sie springen direkt zu Datenbanken. – Kamurai

+0

Ich denke, das ist eine spezifisch genug Frage, und ist etwas offensichtlich und einfach für Sie alle, die web.py und Python gut kennen. Ich bin nur ein wenig grün und könnte einige Hinweise, wie dies richtig zu tun, anstatt zu versuchen, nur den gesamten Code in Variablen und die Weitergabe in der Hauptdatei .py ......., es sei denn das ist die Antworten. – Kamurai

Antwort

0

Okay, ich habe ein wenig und bin nun in der Lage gelernt, meine zu replizieren Website in web.py, aber ich mag es nicht, wie ich es an bestimmten Orten mache.

1) Ich möchte in der Lage sein, die Vorlagen aufzurufen, ohne jedes Mal Main aufzurufen. 2) Ich möchte die Funktionen aus dem Layout aufrufen können.

Bitte kommentieren, wenn Sie möchten, wäre jeder Hinweis zu den oben genannten hilfreich.

Ich werde dies kopieren und erneut als eine weitere Frage.

code.py:

import web 
import Universal 
import Navigation 
import Content 
import Versions 


urls = (
    '/favicon.ico', 'icon', 
    '/', 'index', 
    '/Section1/index', 'Section1', 
    '/Section2/index', 'Section2', 
    '/Section3/index', 'Section3' 
) 

app = web.application(urls, globals(), autoreload=True) 
render = web.template.render('templates/')#, base='Layout') 

static = web.template.render('static/') 

Main = web.template.render('templates/') 
Section1 = web.template.render('templates/Section1/') 
Section2 = web.template.render('templates/Section2/') 
Section3 = web.template.render('templates/Section3/') 

class static: 
    def GET(self): 
     return static() 

#class icon: 
# def GET(self): 
#  return static.favicon() 

class index: 
    def GET(self): 
     vPage = '0' 
     vLevel = '0' 
     vSection = '0' 
     vHead = Universal.getHead(vSection) 
     vHeader = Universal.getHeader() 
     vNavBar = Universal.getNavBar() 
     vNavigation = Navigation.getNavigation(vLevel) 
     vContent = Content.getContent(vLevel) 
     vVersions = Versions.getVersions(vLevel) 
     vFooter = Universal.getFooter() 
     return Main.Layout(vHead, vHeader, vNavBar, vNavigation, vContent, vVersions, vFooter) 

class Section1: 
    def GET(self): 
     vPage = '0' 
     vLevel = '1' 
     vSection = '1' 
     vHead = Universal.getHead(vSection) 
     vHeader = Universal.getHeader() 
     vNavBar = Universal.getNavBar() 
     vNavigation = Navigation.getNavigation(vLevel) 
     vContent = Content.getContent(vLevel) 
     vVersions = Versions.getVersions(vLevel) 
     vFooter = Universal.getFooter() 
     return Main.Section1.Layout(vHead, vHeader, vNavBar, vNavigation, vContent, vVersions, vFooter) 

class Section2: 
    def GET(self): 
     vPage = '0' 
     vLevel = '2' 
     vSection = '2' 
     vHead = Universal.getHead(vSection) 
     vHeader = Universal.getHeader() 
     vNavBar = Universal.getNavBar() 
     vNavigation = Navigation.getNavigation(vLevel) 
     vContent = Content.getContent(vLevel) 
     vVersions = Versions.getVersions(vLevel) 
     vFooter = Universal.getFooter() 
     return Main.Section2.Layout(vHead, vHeader, vNavBar, vNavigation, vContent, vVersions, vFooter) 

class Section3: 
    def GET(self): 
     vPage = '0' 
     vLevel = '3' 
     vSection = '3' 
     vHead = Universal.getHead(vSection) 
     vHeader = Universal.getHeader() 
     vNavBar = Universal.getNavBar() 
     vNavigation = Navigation.getNavigation(vLevel) 
     vContent = Content.getContent(vLevel) 
     vVersions = Versions.getVersions(vLevel) 
     vFooter = Universal.getFooter() 
     #return render.Layout(vHead, vHeader, vNavBar, vNavigation, vContent, vVersions, vFooter) 
     return Main.Section3.Layout(vHead, vHeader, vNavBar, vNavigation, vContent, vVersions, vFooter) 

templates/Layout.html:

$def with (vHead, vHeader, vNavBar, vNavigation, vContent, vVersions, vFooter) 

<html> 
<head> 
    $:vHead 
</head> 
<body id="idBody"> 
    <table id="idTableMain"> 
     <tr id="idHeaderRow"> 
      <td id="idHeaderRowCenter" colspan="3"> 
       $:vHeader 
      </td> 
     </tr> 
     <tr id="idNavigationRow"> 
      <td id="idNavigationBar" colspan="3"> 
       $:vNavBar 
      </td> 
     </tr>    
     <tr id="idCenterRow"> 
      <td id="idCenterRowLeft"> 
       <h4> 
        Navigation 
       </h4> 
       $:vNavigation 
      </td> 
      <td id="idCenterRowMain"> 
       $:vContent 
      </td> 
      <td id="idCenterRowRight"> 
       <h4> 
        Information 
       </h4> 
       This was written with Python 2.7 and web.py.<br><br> 
       Other versions of this page are here:<br> 
       $:vVersions 
      </td> 
     </tr> 
     <tr id="idFooterRow"> 
      <td id="idFooterMain" colspan="3"> 
       $:vFooter 
      </td> 
     </tr> 
    </table> 
</body> 
</html> 

Universal.py

def getHead(vSection): 
    vResult = '<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">' 
    vResult += '<link href=' + getCSS(vSection) + ' rel=\"stylesheet\" type="text/css">' 
    return vResult 

def getCSS(vSection): 
    if vSection == '1': 
     vResult = '/static/Section1/Section1.css' 
    elif vSection == '2': 
     vResult = '/static/Section2/Section2.css' 
    elif vSection == '3': 
     vResult = '/static/Section3/Section3.css' 
    else: 
     vResult = '/static/Main.css' 
    return vResult 

def getHeader(): 
    vResult = '<img id=\"idLogo\" src=' + getLogo() + '>' 
    return vResult 
def getNavBar(): 
    vResult = '<a class=\'navBar\' href=\'/index\'>Home</a>' 
    vResult += '<a class=\'navBar\' href=\'/Section1/index\'>Web Programming</a>' 
    vResult += '<a class=\'navBar\' href=\'/Section2/index\'>Private Projects</a>' 
    vResult += '<a class=\'navBar\' href=\'/Section3/index\'>Downloadable Projects</a>' 
    return vResult 
Verwandte Themen