【问题标题】:passing url parameter in django template using form使用表单在 django 模板中传递 url 参数
【发布时间】: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 方法,但我忘记删除了

标签: python django django-templates django-urls


【解决方案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

    【讨论】:

    • 但我想用户输入用户名。
    猜你喜欢
    • 2014-08-06
    • 2017-08-11
    • 2016-09-30
    • 2019-01-11
    • 1970-01-01
    • 2015-11-18
    • 2019-02-06
    • 1970-01-01
    • 2020-03-21
    相关资源
    最近更新 更多