在urls.py文件中创建路径时,通常会这样做:
urlpatterns = [
path('foo/',views.FooView,name='bar'),
]
Run Code Online (Sandbox Code Playgroud)
我是Django的初学者,但尚未在path函数中看到name参数的函数。此参数的作用是什么,如何在Django支持的网站内有效地使用它?简而言之,此参数的作用是什么,为什么在创建路径时包含它很重要?谢谢!
wim*_*wim 11
有时,您想命名视图,以便您可以通过名称而不是url来引用它们。这样,如果您的应用程序中的url发生更改,则只需在一个位置(urls.py
模块)更新代码。使用名称而不是经过硬编码的url的现有代码不需要更新。
例如,reverse
实用程序函数接受此名称并返回url:
from django.urls import reverse
reverse('bar')
Run Code Online (Sandbox Code Playgroud)
如果您不使用该名称,那么移动路由就很麻烦-您需要在所有模板和代码中查找并更新网址。
假设您需要编写一个URL来引用您的FooView
,那么您可以像这样写它
<a href="/foo/">link</a>
Run Code Online (Sandbox Code Playgroud)
但是,如果您以后改变主意并希望qux/
用于此视图,则可能会出现问题。因此,重写URL可能会导致大量重写。如果URL包含参数也很麻烦。假设您有一个带有pk
和type
参数的URL (例如foo/<pk>/qux/<type>
),那么您需要记住格式,因此要记住格式,这很麻烦:“ 是/foo/1/qux/2
还是/foo/2/qux/1
?”。
因此,我们不想直接编写这些URL,而是要确定这些URL:基于某些标识符以及零个或多个参数来计算URL。通过在路径中定义一个名称,我们首先需要定义这样的标识符,然后我们可以为该路径定义一个名称。
因此,现在我们可以在{% url .. %}
模板中改为使用template标签,例如:
<a href="{% url 'bar' %}">link</a>
Run Code Online (Sandbox Code Playgroud)
然后,Django将进行数学运算,并将其替换为正确的URL。这不仅使我们省去了头痛,而且还保证了URL正确(当然,名称本身是正确的)。因此,如果它呈现HTML输出,则无需担心,我们可能已经在其中一个URL中写了一个错字,因为{% url .. %}
如果找不到名称,或者如果参数不匹配,标记将引发错误。 。
例如,当我们想重定向到页面时,我们可以做同样的事情。如果我们有一个特定的视图重定向到bar
,则它看起来像:
def redirect_view(request):
return redirect('bar')
Run Code Online (Sandbox Code Playgroud)
再一次,我们完成了。如果以后URL发生更改,或者例如当有人要实现翻译的 URL(例如,您可以用英语运行服务器,用俄语运行一台服务器),则这些URL将具有正确的翻译。
如果URL包含参数,例如:
urlpatterns = [
path('foo/<int:pk>/edit',views.FooView,name='bar'),
]
Run Code Online (Sandbox Code Playgroud)
我们也可以使用此参数。在模板中,它看起来像:
<a href="{% url 'bar' pk=2 %}">link</a>
Run Code Online (Sandbox Code Playgroud)
或在视图中:
def redirect_view(request):
return redirect('bar', pk=2)
Run Code Online (Sandbox Code Playgroud)
该参数如何适合URL,这不是我们的问题。Django会自己发现的。
归档时间: |
|
查看次数: |
1527 次 |
最近记录: |