我正在使用Django网络应用程序。我正在尝试实现一个与URL“通信”的搜索字段。
我想从http://127.0.0.1:8000/contract/
到我在搜索字段中输入ID时,将我重定向到http://127.0.0.1:8000/contract/id
。
问题是,使用搜索字段时,它将我重定向到http://127.0.0.1:8000/contract/?search=id
,这并不是真正的问题。但是,当我尝试定义urlpattern时,它不会“识别” URL中的问号。结果是我无法访问正确的模板。
urlpatterns = [
path('?search=<id_contract>/', app_views.view_contract),
path('', app_views.contract, name='my_contract'),
]
我看到了两种可能的解决方案:要么我试图找到一种消除该问号的方法,但我还没有真正找到在哪里做的方法,因此,非常感谢您的帮助!
第二种选择是使用正则表达式,但到目前为止我没有尝试过:
re_path(r'.+\?.*'+'search'+'(?P<id_contract>)/$'
最佳答案
Django使用请求路径来确定要应用哪种网址格式。路径是URL中http://domain:port/
部分之后和?arg1=value1&arg2=value2
部分之前的所有内容。在您的情况下,两种情况下的路径均为contract/
。
要在?
之后处理参数,应使用request.args
等在端点中编写特定的代码。但是,就您的情况而言,我认为您应该停止使用默认搜索表单,并编写一些JavaScript以使其按需要导航至contract/id
。
关于python - 路径功能无法识别问号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51399804/