使用表单在 django 模板中传递 url 参数

passing url parameter in django template using form

我正在编写一个页面,该页面采用一个 ID 并查找与该 ID 匹配的用户。 这是我在 urls.py:

中写的 URL 模式
re_path(r'^users/id=(?P<username>[0-9]{9})$' , views.usershow , name = 'usershow') ,

我想使用表单传递用户名,所以我在 templates:

中写了这个
<form action="{% url 'CMS:usershow' %}" method="GET" >
{% csrf_token %}
<input name="id" type="number" placeholder="search">
<button type="submit">find</button>
</form>

但它向我显示了这个 错误 :

Reverse for 'usershow' with no arguments not found. 1 pattern(s) tried: ['dashboard/users/id=(?P<username>[0-9]{9})$']

如何使用具有这种 URL 模式的表单传递它?

首先,确保 CMS 应用的 urls.py 有路径。

其次,传递用户id值如下图:

<form action="{% url 'CMS:usershow' user_id %}" method="GET" >

REF: https://docs.djangoproject.com/en/2.1/topics/http/urls/#s-reverse-resolution-of-urls

表单不是这样工作的。从模式中删除用户名:

path(r'^users/' , views.usershow , name = 'usershow') ,

并在视图中从请求中获取值;

username = request.GET["id"]