【问题标题】:Submitting data from a form to django view将数据从表单提交到 django 视图
【发布时间】:2013-10-30 16:07:57
【问题描述】:

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

我的基本 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)

【问题讨论】:

  • 你为什么没有csrf_token
  • @GamesBrainiac 已更新但仍然没有运气:(

标签: python django html


【解决方案1】:

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

改变你的看法

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 您的回答几乎是正确的,但请补充一个事实,即我必须在&lt;form&gt; 标签内添加一个csrf_token 以帮助其他人...
  • 什么是csrf_token
【解决方案2】:

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

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

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

text 参数没有传递给 url 模式。所以无法通过这种方式访问​​

发布: 在此方法中,数据不在请求 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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多