4

当我打开 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)
4

2 回答 2

12

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

改变你的看法

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>
于 2013-10-30T16:17:20.987 回答
1

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

GET:像http://www.google.com/?q=keyword+to+search 您可以通过以下方式访问“keyword+to+search”:

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

文本争论没有传递给 url 模式。所以无法以这种方式访问

POST:在此方法中,数据不在请求 url 中。所以要通过 POST 方法访问表单数据提交试试这个

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

强烈建议使用 Django 表单而不是直接从 request.POST 或 request.GET 访问

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

于 2013-10-30T16:22:56.723 回答