1

私は自分自身を正しく表現できればと思っています。

「章」を編集する目的を持つHTMLページのハンドラーがあります。このページには章がリストされており、ボタンを使用してチャプターを追加できます。そのため、ページを初めて開くと、章がリストされ、さらに追加するボタンがリストされます。[追加]をクリックすると、同じページが表示されますが、章情報のフォームが表示されます。

私の問題は、ページをリロードするときに編集中の章の情報を渡すことです。これは、章への参照である「tut_key」を渡すことができないためです。

editTut.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 Engine で 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 に答える