Django,如何在提交表单时将 HTML 表单值传递给 URL?

Posted

技术标签:

【中文标题】Django,如何在提交表单时将 HTML 表单值传递给 URL?【英文标题】:Django, How to pass HTML form values to URL upon form submission? 【发布时间】:2022-01-24 05:10:54 【问题描述】:

项目的url如下,

 path('post/<str:state>/',SearchView.as_view(),name='search-data')

我有一个 html 表单,在填写和提交它应该将填写的表单数据传递给 URL。

<form action=% url 'search-data'% method="get" >
      % csrf_token %
     
      <input type="text"  name="fname">  

但它并没有按预期工作。

当表单提交时,它会给出下面的 URL

http://127.0.0.1:8000/%7Burl?csrfmiddlewaretoken=2RZfZ4cxLB...

【问题讨论】:

您没有任何提交按钮,您的网址应该是% url 'search-data' % 而不是url 'search-data' 添加和编辑但同样的错误, 我在URL中有更多的参数要传递,如果我关注你,我如何获取url参数。视图函数的价值 ?像 follow state = self.kwargs['state'] 你好@Almiracontracting 检查我的答案 【参考方案1】:

您不必在 urlpatterns 中传递 &lt;str:state&gt; 参数,只需传递 path('post/search',SearchView.as_view(),name='search-data') 或任何您想要的,但问题是当您传递像这样的参数 post/&lt;str:state&gt;/ 时,您还必须在表单操作中指定它 像这样% url 'search-data' state % 最初你没有任何状态所以这就是为什么你必须从你的表单中获取状态名称所以你的代码最终看起来像这样

<form action=% url 'search-data'% method="get" >
      % csrf_token %
     
      <input type="text"  name="fname">  
      <input type="submit" value="search">
</form>

在您看来,您必须从 request.GET 这样的方法中获取它

def search(request):
    state = request.GET.get('fname', None)
    .... do whatever you want 
    return response_or_data

【讨论】:

以上是关于Django,如何在提交表单时将 HTML 表单值传递给 URL?的主要内容,如果未能解决你的问题,请参考以下文章

提交按钮是不是在表单提交时将其值传递给操作方法?

使用 AngularJS 在表单提交时将选择字段重新设置为默认值

django 如何写表单提交

如何根据用户输入动态更改 django 中的表单(提交前)

如何在表单提交时将参数发送到路由

提交时应该如何收集克隆的 Django 表单?