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 中传递 <str:state>
参数,只需传递 path('post/search',SearchView.as_view(),name='search-data')
或任何您想要的,但问题是当您传递像这样的参数 post/<str:state>/
时,您还必须在表单操作中指定它
像这样% 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?的主要内容,如果未能解决你的问题,请参考以下文章