如何在 django 2 中将 # 作为参数传递 url



我正在尝试传递代码"Req-2019#000001"Django URL。我想将此代码以及 URL 中的普通字符串和数字作为参数传递。

path('generateBomForSingleProduct/<requisition_no>/' , views.generateBomForSingleProduct, name='generateBomForSingleProduct'),

它工作正常,但问题是它在#之前添加额外的/

我的网址现在是这个

http://127.0.0.1:8000/production/generateBomForSingleProduct/Req-2019/#000001

但我想喜欢这个

http://127.0.0.1:8000/production/generateBomForSingleProduct/Req-2019#000001

在我的">#">之前没有额外的"/">

URL 中遵循#符号的部分通常不会在页面请求中发送到服务器。因此,不可能将URL作为/production/generateBomForSingleProduct/Req-2019#000001

<小时 />

解决方法

只需将网址修改为/production/generateBomForSingleProduct/Req-2019/000001,因此您还需要修改视图

# views.py
def generateBomForSingleProduct(request, part_1, part_2):
unique_id = "{}#{}".format(part_1, part_2)
# use the "unique_id"
...
#urls.py
urlpatterns = [
...,
path('foo/<part_1>/<part_2>/', generateBomForSingleProduct, name="some-name"),
...
]

使用"get"将是执行此操作的正确方法。#适用于不会发送到服务器的 HTML 片段。为什么不能只是

/production/generateBomForSingleProduct/Req-2019?code=000001然后你以这种方式处理视图中的所有内容?

#之后的部分称为片段标识符,由浏览器使用,永远不会发送到服务器。

http://127.0.0.1:8000/production/generateBomForSingleProduct/Req-2019/#000001url 中,000001永远不会发送到服务器。因此,在#之后使用url的重要部分是没有用的。最好将000001作为查询参数或单独的参数传递。

最新更新