使用表单在 django 模板中传递 url 参数
Posted
技术标签:
【中文标题】使用表单在 django 模板中传递 url 参数【英文标题】:passing url parameter in django template using form 【发布时间】:2019-06-25 21:04:45 【问题描述】:我正在编写一个带有 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 模式的表单传递它?
【问题讨论】:
当你的表单方法是GET
时,你真的必须通过% csrf_token %
吗?我认为不会。
@HassanBaig 没有。在此之前我尝试过 post 方法,但我忘记删除了
【参考方案1】:
这不是表单的工作方式。从模式中删除用户名:
path(r'^users/' , views.usershow , name = 'usershow') ,
并在视图中从请求中获取值;
username = request.GET["id"]
【讨论】:
【参考方案2】:首先,确保 CMS 应用的 urls.py 具有路径。
其次,传递user id值如下图:
<form action="% url 'CMS:usershow' user_id %" method="GET" >
参考号:https://docs.djangoproject.com/en/2.1/topics/http/urls/#s-reverse-resolution-of-urls
【讨论】:
但我想用户输入用户名。以上是关于使用表单在 django 模板中传递 url 参数的主要内容,如果未能解决你的问题,请参考以下文章