【问题标题】:python- Django : Where does Django "Append a Slash"?python- Django:Django“追加斜线”在哪里?
【发布时间】:2021-10-24 12:59:37
【问题描述】:

我想知道...

如果我有一个名为ma​​gazine的应用程序,它的urlpatternsurls.py里面是这样的:

from django.urls import path
from . import views

path("articles/<int:pk>", views.get_article, name="article")

.. 没有尾部斜杠,那么 Django 默认应该“附加一个斜杠”,对吧?

这个斜线附加在哪里?

我的意思是我是在浏览器中手写url的时候才添加的吗?

我的意思是如果这样的模板中有一个锚标记:

<a href="{% url 'magazine:article' 5 %}"> Article 5 </a>

.. 会不会去获取上面没有尾部斜杠的路径,然后出现 Not Found 的错误?

这个 APPEND_SLASH 设置是否意味着我不能,或者如果不在末尾添加尾部斜杠就无法访问上面的链接?

【问题讨论】:

  • 不附加斜线。如果您将APPEND_SLASH setting 设置为True,那么它将首先尝试匹配 URL而不添加斜杠,只有当失败时,它才会附加一个斜杠并再次尝试查找匹配。
  • 哦好的????,谢谢。
  • @Willem Van Onsem

标签: django django-templates django-urls


【解决方案1】:

斜线是附加的。因此,这意味着您可以使用 /arcticles/5 访问此页面(例如使用主键 5 访问文章)。

Django 有一个APPEND_SLASH setting [Django-doc]。如果设置为True(默认值),它将首先尝试将路径与给定的 URL 模式匹配,如果失败,则附加一个斜杠并再次搜索。

但是,使用尾随路径更有意义,因此我建议将路径重写为:

path('articles/&lt;int:pk&gt;<strong>/</strong>', views.get_article, name='article')

【讨论】:

  • 谢谢?@Willem Van Onsem
猜你喜欢
  • 2019-03-22
  • 2011-02-18
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多