我正在开发一个 Django 网络应用程序。我正在尝试实现一个可以与 url“通信”的搜索字段。
我希望 http://127.0.0.1:8000/contract/
当我在搜索字段中输入 id 时,它会将我重定向到 http://127.0.0.1 :8000/合约/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 模式。路径是 URL 的 http://domain:port/
部分之后和 ?arg1=value1&arg2=value2
部分之前的所有内容。在这两种情况下,您的路径都是 contract/
。
要在 ?
之后处理参数,您应该在端点中使用 request.args
或其他方式编写特定代码。但是,对于您的情况,我认为您应该停止使用默认搜索表单并编写一些 JavaScript 以使其根据需要导航到 contract/id
。
关于python - 路径功能无法识别问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51399804/