【问题标题】:POST method does the correct post and then rerenders the whole pagePOST 方法执行正确的发布,然后重新呈现整个页面
【发布时间】:2012-06-28 05:08:20
【问题描述】:

我正在使用帖子来获取基于用户选择然后提交的单选按钮的参数,并且发生了正确的操作,但随后在页面下方出现了用户未登录的整个新页面。我不太确定发生了什么,但这里是适用的代码,我当然使用 HTML 加上带有 python 和 jinja2 的谷歌 appengine。

此处为 HTML:

<form method="POST">
<input type="radio" name="category" value="discussion">Discussion<br>
<input type="radio" name="category" value="adventures">Adventures<br>
<input type="radio" name="category" value="reviews">Reviews<br>
<input type="radio" name="category" value="badges">Badge Applications<br>

<input type="submit" class="btn btn-medium btn-primary" value="Filter!">
</form>

这里是蟒蛇:

def post(self):
    category = self.request.get('category')

    if category:
        user = users.get_current_user()
        logout = users.create_logout_url(self.request.uri)
        global visits

        category = self.request.get('category')                
        posts = db.GqlQuery("select * from Post where category=:1 order by created desc limit 30", category)
        self.render("home.html", posts=posts, user=user, visits=visits, logout=logout)

我的 home.html 文档:

        {% for post in posts %}
            {{post.render() | safe}}
            <br>
        {% endfor %}

【问题讨论】:

    标签: python html google-app-engine navigation jinja2


    【解决方案1】:

    根据您的问题,我了解到用户未登录,在这种情况下,请尝试以下操作:

    def post(self):     
      category = self.request.get('category')      
      if category:         
        user = users.get_current_user()         
        if user:
          logout = users.create_logout_url(self.request.uri)         
          global visits          
          category = self.request.get('category')                         
          posts = db.GqlQuery("select * from Post where category=:1 order by created desc limit 30", category)         
          self.render("home.html", posts=posts, user=user, visits=visits, logout=logout) 
        else:
          self.redirect(users.create_login_url(self.request.uri)) 
    

    【讨论】:

    • 好吧,用户登录并不重要。页面最初呈现正确,但在正确呈现下方是用户未登录的错误页面。
    • 我认为问题可能在于它正在发送页面上的所有表单,这没有意义,因为我关闭了所有
      标签。没有特定输入的输入按钮是否提交的不仅仅是它们所在的特定表单?
    • 因此,通过添加并将 else 语句更改为页面底部的 elif 语句,我能够修复它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2013-01-05
    • 2021-12-18
    • 2012-12-03
    相关资源
    最近更新 更多