2012-12-04 2 views
0

파이썬 파일을 파이썬 및 HTML 파일로 만들려고합니다. 내가 가지고있는 코드는 기본적으로 파이썬 방명록 예제에서 있지만 html 파일을 사용하여 브라우저를 사용하도록하고 싶습니다. 내가 하단에 자바 스크립트를 추가 할 때 내가 지금 작품을 가지고 있지만 코드는 내가 당신의 시간을 ceemee11111.appspot.com파이썬 파일을 파이썬 및 HTML 파일로 분할하는 방법

import cgi 
import datetime 
import urllib 
import webapp2 

from google.appengine.ext import db 
from google.appengine.api import users 


class Greeting(db.Model): 
    """Models an individual Guestbook entry with an author, content, and date.""" 
    author = db.StringProperty() 
    content = db.StringProperty(multiline=True) 
    content2 = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 


def guestbook_key(guestbook_name=None): 
    """Constructs a Datastore key for a Guestbook entity with guestbook_name.""" 
    return db.Key.from_path('Guestbook', guestbook_name or 'default_guestbook') 


class MainPage(webapp2.RequestHandler): 
    def get(self): 
    self.response.out.write('<html><body>') 
    guestbook_name=self.request.get('guestbook_name') 


    greetings = db.GqlQuery("SELECT * " 
         "FROM Greeting " 
         "WHERE ANCESTOR IS :1 " 
         "ORDER BY date DESC LIMIT 3", 
         guestbook_key(guestbook_name)) 


    self.response.out.write(""" 
     <form action="/sign?%s" method="post"> 
     <div id="container" style="width:800px"> 

     <div id="header" style="background-color:#FFA500;"> 
     <h1 style="margin-bttom:0;">Main Title</h1></div> 

     <div id="Con0" style="background-color:#FFD700; 
    height:200px;width:200px;float:left;"> 
     <b>Menu</b><br> 
     HTML<br> 
     CSS<br> 
     <p id="demo1"></p><br> 
     JavaScript</div> 

     <div id="content" style="background-color:#EEEEEE;height:200px;width:600px;float:left;"> 
Content goes here</div> 
     </div> 
     <button onclick="myFunction()">Try it</button> 
     </form> 
    </body> 
    </html>""") 


self.response.out.write(""" 
     <form action="/sign?%s" method="post"> 
     <div id="dataImput" 
     <div><textarea name="content" rows="1" cols="10"></textarea></div> 
     <div><textarea name="content2" rows="1" cols="10"></textarea></div> 
     <div><input type="submit" value="Sign Guestbook"></div> 
     </div> 
     </form> 
     <hr> 
     <form>Guestbook name: <input value="%s" name="guestbook_name"> 
     <input type="submit" value="switch"></form> 
    </body> 
    </html>""" % (urllib.urlencode({'guestbook_name': guestbook_name}), 
         cgi.escape(guestbook_name))) 


class Guestbook(webapp2.RequestHandler): 
    def post(self): 
    # We set the same parent key on the 'Greeting' to ensure each greeting is in 
    # the same entity group. Queries across the single entity group will be 
    # consistent. However, the write rate to a single entity group should 
    # be limited to ~1/second. 
    guestbook_name = self.request.get('guestbook_name') 
    greeting = Greeting(parent=guestbook_key(guestbook_name)) 

    if users.get_current_user(): 
     greeting.author = users.get_current_user().nickname() 

greeting.content = self.request.get('content') 
greeting.content2 = self.request.get('content2') 
greeting.put() 
self.redirect('/?' + urllib.urlencode({'guestbook_name': guestbook_name})) 


app = webapp2.WSGIApplication([('/', MainPage), 
          ('/sign', Guestbook)], 
          debug=True) 

#<script> 
#function myFunction() 
#{ 
#document.getElementById("demo1").innerHTML="test"; 
#} 

감사합니다에서이 코드는 오류가 발생합니다. Dan

답변

1

분명히 GAE를 사용 중이라면 here을 윤곽을 나타냅니다.

먼저, HTML을 개별 파일로 이동하십시오. 우리는 이상한 freefloating self.response.out.write에서 HTML로 시작합니다 :

""" 
     <form action="/sign?%s" method="post"> 
     <div id="dataImput" 
     <div><textarea name="content" rows="1" cols="10"></textarea></div> 
     <div><textarea name="content2" rows="1" cols="10"></textarea></div> 
     <div><input type="submit" value="Sign Guestbook"></div> 
     </div> 
     </form> 
     <hr> 
     <form>Guestbook name: <input value="%s" name="guestbook_name"> 
     <input type="submit" value="switch"></form> 
    </body> 
    </html>""" % (urllib.urlencode({'guestbook_name': guestbook_name}), 
         cgi.escape(guestbook_name)) 

이것은 우리가 myhtml.html 전화 할게 별도의 파일에 속한다. 두 번째로, %s 대신 파이썬 문자열 포맷을 사용하는 Django 템플릿 시스템을 사용합니다. 그래서 첫째, 우리는 {{ }}에 둘러싸여 템플릿 친화적 인 필드와 %s를 대체하는거야, 우리에게주는 : 우리가 | 다음에 오는 것입니다 escapetemplate filter을 사용할 수 있었다

""" 
     <form action="/sign?{{ guestbook_name }}" method="post"> 
     <div id="dataImput" 
     <div><textarea name="content" rows="1" cols="10"></textarea></div> 
     <div><textarea name="content2" rows="1" cols="10"></textarea></div> 
     <div><input type="submit" value="Sign Guestbook"></div> 
     </div> 
     </form> 
     <hr> 
     <form>Guestbook name: <input value="{{ guestbook_name|escape }}" name="guestbook_name"> 
     <input type="submit" value="switch"></form> 
    </body> 
    </html>""" 

주에 우리가 얻는 값을 guestbook_name에서 탈출하십시오.

마지막으로, 우리는 HTML을로드하고 우리가 필요로하는 인수를 전달합니다 : 당신은 나에게 많은 시간을 저장 한

self.response.out.write(template.render('myhtml.html', {'guestbook_name': guestbook_name})) 
+0

귀하의 코드를 복사하고 가까이 다가 가고 있다고 생각하지만 추적의 마지막 줄은 .... "C : \ Program Files (x86) \ Google \ google_appengine \ google \ appengine \ _internal \ django \ template \ loader 파일입니다. py ", 138 행, 찾기 _template 인상 TemplateDoesNotExist (이름) TemplateDoesNotExist : myhtml.html ... 그래서 경로 문제가 있다고 생각합니다. –

1

여러분의 코드는 실제로 HTML을 파이썬 코드에서 분리하여 이익을 얻을 것이라고 생각합니다.

html 템플릿을 작성하고 jinja2 (google appengine과 함께 제공)를 사용하여 html을 생성하면됩니다. 이를 수행하는 방법에 대한 지침이 있습니다. here. JavaScript는 Python 코드가 아닌 HTML 템플리트에 포함됩니다.

+0

을이 대답은이 문제를 해결하지만 난 얻을 및 오류 파일 "C : \ 프로그램 파일 (x 86) \ Google \ google_appengine \ google \ appengine \ _internal \ jinja \ template \ loader.py ", 줄 138, find_template 인상 TemplateDoesNotExist (이름) TemplateDoesNotExist : index.html ... 그래서 경로 문제라고 생각합니다 –

관련 문제