2013-04-15 56 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