2013-01-23 21 views
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) 
+0

讓我確定我明白了。問題是記住有人重新加載頁面時你已經編輯了哪一章?如果這是正確的,那麼使用cookie可能是一個好方法。 – Nate

+0

我完全忘記了Cookie ...我要去試試,謝謝 – mFontoura

+0

很酷,我已經將它添加爲答案,以防將來有人幫助其他人。 – Nate

回答

2

在這裏設置cookie可能是一個不錯的選擇。當他們選擇一個章節時,您可以發送一個指定該選項的cookie。然後,每次加載頁面時,只需檢查該cookie。如果cookie存在且有效,您應該知道他們正在編輯哪一章。

您可以在谷歌應用程序引擎的cookies是這樣的:

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

value可能是一些引用您正在使用的一章。如果您將expires留空,則應在關閉瀏覽器(您可能需要)時過期。

你可以得到的cookie:

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

然後你可以只分配一個cookie的一個變量,並檢查它的章節信息。

1

我希望我理解錯的話,我必須加載基於標準的形式做到了,像這樣:

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

    return self.render_template(form, **params) 
+0

但我不想使用另一個HTML頁面。由於Nate說我可能需要使用cookies – mFontoura

+0

np很高興你找到了解決方案 – 2013-01-23 19:21:14

相關問題