1

我希望我能正确地表达自己,就这样吧。

我有一个 html 页面的处理程序,其目的是编辑“章节”。在此页面中列出了章节,您可以使用按钮添加更多章节。因此,当您第一次打开页面时,会列出章节和添加更多章节的按钮。如果您单击“添加”,它应该会向您显示相同的页面,但会显示章节信息的表格。

我的问题是在重新加载页面时传递我们正在编辑的章节的信息,因为无法传递“tut_key” - 对章节的引用。

编辑图.html:

{% for chap in chaps %}
       Title: {{ chap.title}}<br>
    {% endfor %}

{% if not editMode or editMode == 0 %}
<form ????????>
    <input id="tutBtnNext" type="submit" value="Add">
</form>
{% endif %}

{% if editMode == 1 %}
    <form method="post">
        <!-- form stuff -->
    </form>
{% endif %}

班上:

class EditTut(FuHandler):
    def get(self):
        tutID = self.request.get('tut_key')
        tut = db.Key.from_path('Tutorial', tutID)
        chaps = db.GqlQuery("SELECT * FROM Chapter " +
                            "WHERE tutorial = :1", tut)
        self.render('editTut.html', chaps=chaps)

    def post(self):
        tutID = self.request.get("tut_key")
        tutorial = db.Key.from_path('Tutorial', tutID)
        title = self.request.get("chapTitle")
        content = self.request.get("content")
        note = self.request.get("note")

        chap = Chapter(tutorial=tutorial, title=title,
                       content=content, note=note)
        chap.put()
        self.redirect('/editTut?tut_key=%s' % tutID)

    #should i use something like this? 
    #I tried but i can't find a way to call this function on the html
    def addChap(self):
        tutID = self.request.get("tut_key")
        self.redirect('/editTut?tut_key=%s' % tutID)
4

2 回答 2

2

在这里设置 cookie 可能是一个不错的选择。当他们选择一章时,您可以发送一个指定该选项的 cookie。然后,每次加载页面时,您只需检查该 cookie。如果 cookie 存在且有效,您应该知道他们正在编辑哪一章。

您可以像这样在 Google App 引擎中设置 cookie:

self.response.set_cookie('name', 'value', expires=expire_time, path='/', domain='example.com')

value可能是引用您正在使用的章节的内容。如果您expires留空,它应该在他们关闭浏览器时过期(您可能想要)。

您可以通过以下方式获取 cookie:

self.request.cookies.get('name','')

然后你可以将该cookie分配给一个变量,并检查它的章节信息。

于 2013-01-23T21:32:33.413 回答
1

我希望我理解正确,我必须根据标准加载表单并这样做:

    if not editMode:
            params = {} 
            form = 'add_mode.html'
    else:
            params = {"data", data}
            form = 'edit_mode.html'

    return self.render_template(form, **params)
于 2013-01-23T19:08:24.767 回答