Django: 模板{% url %}标签,如何从表单传递参数

0 投票
2 回答
3855 浏览
提问于 2025-04-18 09:58

这里有一个模板:

<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

撰写回答