2013-04-15 85 views
2

我有django 1.4,我正在學習使用django舊版本的教程。它是一個簡單的教程,以頁面爲模型創建一個wiki應用程序。窗體操作不在django中工作

問題是沒有調用窗體中與POST方法對應的視圖函數。

這是urls.py內容:

url(r'^wikicamp/(?P<page_name>[^/]+)/edit/$', 'wiki.views.edit_page'), 
url(r'^wikicamp/(?P<page_name>[^/]+)/save/$', 'wiki.views.save_page'), 
url(r'^wikicamp/(?P<page_name>[^/]+)/$', 'wiki.views.view_page'), 

這是模板edit.html的內容:

<from method = "get" action="/wikicamp/{{page_name}}/save/"> 
{% csrf_token %} 
    <textarea name = "content" rows="20" cols="60"> 
    {{content}} 
    </textarea> 
    <br/> 
    <input type="submit" value="Save Page"/> 
</form> 
<a href="/wikicamp/{{page_name}}/save/">this is link to save</a> 

而且這是在views.py內容:

def edit_page(request, page_name): 
try: 
    page = Page.objects.get(pk=page_name) 
    content = page.content 
except Page.DoesNotExist: 
    content = "" 
return render_to_response("edit.html", {"page_name":page_name, "content":content}, context_instance=RequestContext(request)) 

def save_page(request, page_name): 
    return HttpResponse("You're looking at the page %s." % page_name) 

我最初得到csrf相關的錯誤,然後我嘗試了所有在提供的修復3210並遵循許多與POST和django相關的stackoverflow問題。現在沒有任何反應,當我點擊「保存頁面」按鈕時,什麼都沒有!甚至沒有任何要求從窗體發送(使用螢火蟲跟蹤HTTP請求和響應)

回答

3

您的HTML一個錯字:from,而不是form

您可能會意識到這一點,但該代碼不會真的保存任何內容。我不確定你在關注什麼博客,但是在文檔中正式的Django教程之後,你會變得更好,然後閱讀表單文檔。

+0

哦,上帝殺了我!是的,這是錯誤的 不,'save_page'是一個複雜的功能。謝謝! – krips89

1

您可能需要在您的窗體中將method更改爲"POST"

​​

<form method = "post" action="/wikicamp/{{page_name}}/save/"> 
+0

您複製了他的拼寫錯誤。 –

+0

@limelights,哦,是的! – Rohan

+0

事實上,當它無法工作時,我正在玩'get'和'post'。是的,'表'是罪魁禍首:(。謝謝! – krips89

0

有一些拼寫錯誤,如from而不是form。 此外,表單格式不正確。

變化:

<a href="/wikicamp/{{page_name}}/save/">this is link to save</a> 

<input type="submit" value="Save Page" /> 

第三,改變method= "get"method="POST"

整個造型看起來應該像這樣

<form method = "POST" action="/wikicamp/{{page_name}}/save/"> 
{% csrf_token %} 
    <textarea name = "content" rows="20" cols="60"> 
    {{content}} 
    </textarea> 
    <br/> 
    <input type="submit" value="Save Page"/> 
</form> 

還什麼@DanielRoseman說。但是,嘿,它可能會走得更遠。

+0

非常感謝,這是'form'的拼寫錯誤。 – krips89