【问题标题】:why does the page not display any information为什么页面不显示任何信息
【发布时间】:2014-05-06 21:11:17
【问题描述】:

我正在学习如何将 Jinja2 模板用于谷歌应用引擎。这是我编写的示例代码,但在我运行它们时它不显示任何内容。

import os
import jinja2
import webapp2
from google.appengine.ext import db

template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), extensions=['jinja2.ext.autoescape'], autoescape=True)





class Handler(webapp2.RequestHandler):
    def write(self, *a, **kw):
        self.response.out.write(*a, **kw)
    def render_str(self, template, **params):
        t = jinja_env.get_template(template)
        return t.render(params)
    def render(self, template, **kw):
        self.write(self.render_str(template, **kw))

class login(db.Model):
    user_fname=db.StringProperty(required=True)
    user_lname=db.StringProperty(required=True)
    user_name=db.StringProperty(required=True)
    user_email=db.EmailProperty(required=True)
    user_password=db.StringProperty(required=True)
    repeat_password=db.StringProperty(required=True)
    created=db.DateTimeProperty(auto_now_add=True)

class MainPage(Handler):

    def get(self):
        self.render("index.html")
    def render_page(self,user_fname="",user_lname="",user_name="",user_email="",user_password="",repeat_password="",error="" ):
        prof=db.GqlQuery("SELECT * FROM login")
        self.render("index.html",user_fname=user_fname,
        user_lname=user_lname,
        user_name=user_name,
        user_email=user_email,
        user_password=user_password,
        repeat_password=repeat_password,
        error=error)




    def post(self):
        user_fname=self.request.get("user_fname")
        user_name=self.request.get("user_name")

        user_lname=self.request.get("user_lname")
        user_email=self.request.get("user_email")
        repeat_password=self.request.get("repeat_password")
        user_password=self.request.get("user_password")

        if (user_name and user_email and user_fname and user_lname and user_password and repeat_password):
          if not(user_password==repeat_password):
            error="passwords does not match check again carefull"
            self.render_page(user_fname,user_lname,user_name,user_email,"","",error)
          else:
            #store in the database to be used later
            a=login(
                user_fname=user_fname,
                 user_lname=user_lname,
                 user_name=user_name,
                user_email=user_email,
                user_password=user_password,
                repeat_password=repeat_password)
            a.put()

            self.redirect("/profile")
        else:
          error="please fill out the details above"
          self.render_page(user_fname,user_lname,user_name,user_email,"","",error)

class Thankshandler(Handler):
    def get(self):
        self.render("profile.html")
app = webapp2.WSGIApplication([ ('/', MainPage),('/profile',Thankshandler)],debug=True)

在 profile.html 中我添加了

{% for next in prof %}           
     <ul>
       <h1>{{next.user_name}}</hi>
     </ul> 

    {% endfor %}

但它什么也不显示。我想知道如果任何机构可以提供帮助,有什么问题。 在此先感谢

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    真是一团糟。我不会遍历所有代码,但问题的原因是您没有将“prof”及其属性传递给模板 profile.html。研究 jinja,以及如何将数据传递给模板。

    【讨论】:

      猜你喜欢
      • 2022-06-16
      • 2014-01-03
      • 2018-04-27
      • 1970-01-01
      • 2017-11-24
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多