【问题标题】:Django ignore get parameters in pathDjango忽略路径中的获取参数
【发布时间】:2020-12-04 05:32:52
【问题描述】:

我有一个简单的网站,我需要解析这样的网址:

http://127.0.0.1:8000/products/updateproduct?id=1

所以我为它写了下面的 django 路径:

path('updateproduct?id=<int:id>', views.updateProduct, name='updateproduct'),

我也试过这样:

path('updateproduct', views.updateProduct, name='updateproduct'),

这两个路径都附加到网址的/product/ 部分,如下所示:

path('products/', include('products.urls')),

基本上我想要的是让 django 匹配以 updateproduct 开头的任何路径并忽略任何 get 变量(?以及之后的所有内容)。这可能吗?

【问题讨论】:

  • 查询参数(? 后面的东西)总是被路由器忽略。您可以通过request.GET 在您的视图中访问它们。如果您想匹配以“updateproduct”开头的任何路径,您可以使用正则表达式并忽略剩余的字符串,例如path_re(r'^updateproduct/.*', views.updateProduct, name='updateproduct'),
  • 我想我明白你的意思,虽然我认为它在 django 中被称为 re_path

标签: django url path


【解决方案1】:

django 在将 url 与视图匹配时会自动忽略查询。

所以:

http://127.0.0.1:8000/products/updateproduct?id=1 &amp;&amp; http://127.0.0.1:8000/products/updateproduct?id=10&amp;name=value

将由同一个视图处理。

如果你想访问视图中的查询,你需要使用其中一个

request.GET['id']
# or
request.GET.get('id')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2018-12-11
    • 2022-06-30
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多