将表单中的数据提交到django视图

时间:2013-10-30 16:07:58

标签: python html django html5

当我打开html文件时,它会按预期显示,当我在文本框中输入数据并提交时,它会将我重定向到localhost/myapp/output/,但为什么我在文本框中输入的数据未提交,例如像localhost/myapp/output/data_I_submitted

我的基本html文件:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>db app</title>
</head>
<body>
{% csrf_token %}
<form action="output/" method="post" name="Input">
Data : <input type="text" name="text">
<input type="submit" value="submit">
</form>
</body>
</html>

在我的app.urls文件中:

urlpatterns = patterns('',
    url(r'^$',views.index),
    url(r'^output/(?P<text>\w+)/$',views.return_data)
)

最后是视图

def return_data(request,text):
    return HttpResponse('entered text ' + text)

2 个答案:

答案 0 :(得分:9)

如果您的目标只是获取表单上的文字:

将您的观点更改为

def return_data(request):
    return HttpResponse('entered text:' + request.POST['text'])

修改您的网址

urlpatterns = patterns('',
    url(r'^$', views.index),
    url(r'^output/$', views.return_data)
)

和您的模板

<form action="output/" method="post">
{% csrf_token %}
...
</form>

答案 1 :(得分:1)

您最好查看表单中提交的数据。 您可以使用两种方法将表单数据与表单操作属性的请求一起提交:

获取:赞http://www.google.com/?q=keyword+to+search 您可以通过以下方式访问“关键字+到+搜索”:

request.GET['q']
#or better is:
request.GET.get('q', None)

text 争论未传递给url模式。因此无法以这种方式访问​​

发表: 在此方法中,数据不在请求URL中。 所以通过POST方法访问表单数据submittin 试试这个

request.POST['text'] (
#or better is: 
request.POST.get('text', None)

强烈推荐使用Django表单而不是直接从request.POST或request.GET

访问

所以请检查一下:https://docs.djangoproject.com/en/dev/topics/forms/