Django: 模板{% url %}标签,如何从表单传递参数
这里有一个模板:
<form action="{% url 'nfoapp.views.kinoscrap' <I WANT MOVIE_ID THERE> selectshort.id %}" method="post">
<input type="text" class="form-control" name="MOVIE_ID">
<button type="submit" class="btn btn-danger">Kinopoisk Search by ID</button>
</form>
这是我的 urls.py 文件:
(r'^kinoscrap/(?P<kinoid>\d+)/(?P<shortid>\d+)/$', kinoscrap),
我想把两个参数传给 kinoscrap
,一个是表单中的文本字段(MOVIE_ID),另一个是 'selectshort.id' 这个变量。问题是我不能在模板的第一行直接放 MOVIE_ID,因为会报错。但是当我把 MOVIE_ID 换成其他变量,比如 selectshort.id
时,程序就能正常运行,没有错误。
我该如何把文本字段的值传递给视图呢?
顺便说一下,我在使用 bootstrap,不知道这是否重要。
2 个回答
0
(r'^kinoscrap/(?P<kinoid>\d+)/(?P<shortid>\d+)/$', kinoscrap),
你的urls.py文件接受网址中的两个整数值(比如说 kinnoscrap/12/21
这样的格式),如果你传入其他类型的值,比如字母,就会出现错误。如果你想传递一个文本字段,你需要修改正则表达式。
你可以在 regex101 网站上测试你的正则表达式,看看它们是否有效。
1
你可以把表单的动作设置为空,这样它就会提交到同一个页面。然后在这个页面里,你可以使用表单提交的数据进行重定向。
<form action="" method="post">
<input type="text" class="form-control" name="MOVIE_ID">
<button type="submit" class="btn btn-danger">Kinopoisk Search by ID</button>
</form>
接着在这个页面里
def searchView(request):
if request.method == 'POST':
# get variables from form and redirect
else:
# do your normal rendering