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

Posted

技术标签:

【中文标题】如何在 django 2 中将 url 中的 # 作为参数传递【英文标题】:How to pass # in url as a parameter in django 2 【发布时间】:2020-01-17 04:37:52 【问题描述】:

我正在尝试传递代码“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

在我的 "#"

之前不是额外的 "/"

【问题讨论】:

path(r'generateBomForSingleProduct/&lt;requisition_no&gt;/' , views.generateBomForSingleProduct, name='generateBomForSingleProduct'), 试试这个 尽量不要工作,兄弟还是给了我一个额外的/@KostasCharitidis 好吧,我无法用这么少的代码重现,但一个快速的解决方法是使用replace。 IE。 your_url.replace('//#', '#') 你能给我举个例子吗? 【参考方案1】:

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


解决方法

只需修改url为/production/generateBomForSingleProduct/Req-2019/000001,所以还需要修改view

# 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"),
    ...

]

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

所以你想说我不能解决这个问题? @Antu 为什么要在 url 中添加#? 因为 Req-2019/#000001 是一个统一代码。我可能会尝试通过不通过 URL 传递代码来解决此问题的另一种方法,但我只想知道通过 URL 发送 # 是不可能的吗? @Antu 正如我之前所说的,# 之后的部分被称为片段标识符,仅由浏览器使用,从不发送到服务器。 @NishantNawarkhede 请注意,这与 Django 完全无关 - 不将锚部分传递给服务器是 HTTP 规范本身的一部分

以上是关于如何在 django 2 中将 url 中的 # 作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django urls.py 中将 url 参数传递给 reverse_lazy

如何在python,django中将url解码为路径

如何在可重用的应用程序中将命名空间 url 与 django 一起使用

如何在 django 中将 blob url 转换为 mp3 音频

在 Django Urls 中将 URL 作为参数传递

在 Django 中将文件路径作为 URL 参数传递