gpt4 book ai didi

django - django.urls.path中name参数的作用是什么?

转载 作者:行者123 更新时间:2023-12-03 23:39:12 25 4
gpt4 key购买 nike

在 urls.py 文件中创建路径时,通常会这样做:

urlpatterns = [
path('foo/',views.FooView,name='bar'),
]

我是 Django 的初学者,但我还没有看到 path 函数中 name 参数的函数。这个参数有什么用,如何在 Django 驱动的网站中有效地使用它?简而言之,这个参数有什么作用,为什么在创建路径时包含它很重要?谢谢!

最佳答案

想象一下,您需要编写一个 URL 来引用您的 FooView。 ,那么你可以这样写

<a href="/foo/">link</a>

但是,如果您后来改变主意并想使用 qux/,则可能会出现问题。对于这个观点。所以重写一个 URL,可能会导致大量的重写。如果 URL 包含参数也很麻烦。假设您有一个带有 pk 的 URL和 type参数(如 foo/<pk>/qux/<type> ),那么您需要记住格式,从而对格式进行推理,这很麻烦:“是 /foo/1/qux/2 还是 /foo/2/qux/1 ?”。

所以我们不想直接写这些 URL,我们想确定这些:根据一些标识符和零个或多个参数计算 URL。通过在路径中定义名称,我们首先需要定义这样的标识符,我们可以为这样的路径定义一个名称。

所以现在我们可以在模板中使用 {% url .. %}模板标签,如:
<a href="{% url 'bar' %}">link</a>

然后 Django 将进行数学运算,并将其替换为正确的 URL。这不仅让我们头疼,而且还保证 URL 是正确的(当然名称本身是正确的)。因此,如果它呈现 HTML 输出,我们不必担心我们可能在其中一个 URL 中写了错字,因为 {% url .. %}如果找不到名称或参数不匹配,标签将引发错误。

例如,当我们想要重定向到一个页面时,我们也可以这样做。如果我们有某个 View 重定向到 bar , 看起来像:
def redirect_view(request):
return redirect('bar')

再一次,我们完成了。如果稍后 URL 发生变化,或者例如有人想要实现已翻译的 URL(例如,您可以运行一个英语服务器,一个运行俄语服务器),那么这些 URL 将具有正确的翻译。

如果 URL 包含参数,例如:
urlpatterns = [
path('foo/<int:pk>/edit',views.FooView,name='bar'),
]

我们也可以使用这个参数。在模板中它看起来像:
<a href="{% url 'bar' pk=2 %}">link</a>

或在 View 中:
def redirect_view(request):
return redirect('bar', pk=2)

该参数如何适合 URL 不是我们的问题。 Django 会自己发现这一点。

关于django - django.urls.path中name参数的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51922641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com