Django 设置默认为空 url
Django set default empty url
我正在尝试学习 Django 并且正在学习 Corey Shafer 的教程 (https://www.youtube.com/watch?v=a48xeeo5Vnk),但是当我尝试创建两个不同的页面时,我会自动被定向到具有“空地址”的页面":
在他的:
/博客
/urls.py
看起来像这样:
from django.conf.urls import path
from . import views
urlpatterns = [
path('', views.home, name='blog-home'),
path('about/', views.about, name='blog-about'),
]
当他转到 localhost:8000/blog/about 时,页面正确显示
当我试图模仿他的代码为blog/urls.py:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'', views.home, name='blog-home'),
url(r'^about/', views.about, name='blog-about'),
]
localhost:8000/blog/about的结果是views.home的内容,而不是views.about。
当我写一个名字而不是一个空字符串时,以下工作正常:
urlpatterns = [
url(r'^home', views.home, name='blog-home'),
url(r'^about/', views.about, name='blog-about'),
]
但我不明白为什么它在以前的版本中可以工作,为什么现在不能工作,以及如何解决它
A url 如果可以找到匹配的子字符串,则匹配,空字符串 r''
因此匹配 每个 字符串。
您应该使用 anchors 来指定字符串的开始 (^
) 和结束 ($
):
urlpatterns = [
# ↓ ↓ anchors
url(<b>r'^/$'</b>, views.home, name='blog-home'),
url(r'^about/', views.about, name='blog-about'),
]
Note: As of django-3.1, url(…)
[Django-doc] is
deprecated in favor of re_path(…)
[Django-doc].
Furthermore a new syntax for paths has been introduced with path converters: you
use path(…)
[Django-doc] for that.
我正在尝试学习 Django 并且正在学习 Corey Shafer 的教程 (https://www.youtube.com/watch?v=a48xeeo5Vnk),但是当我尝试创建两个不同的页面时,我会自动被定向到具有“空地址”的页面":
在他的:
/博客 /urls.py
看起来像这样:
from django.conf.urls import path
from . import views
urlpatterns = [
path('', views.home, name='blog-home'),
path('about/', views.about, name='blog-about'),
]
当他转到 localhost:8000/blog/about 时,页面正确显示
当我试图模仿他的代码为blog/urls.py:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'', views.home, name='blog-home'),
url(r'^about/', views.about, name='blog-about'),
]
localhost:8000/blog/about的结果是views.home的内容,而不是views.about。
当我写一个名字而不是一个空字符串时,以下工作正常:
urlpatterns = [
url(r'^home', views.home, name='blog-home'),
url(r'^about/', views.about, name='blog-about'),
]
但我不明白为什么它在以前的版本中可以工作,为什么现在不能工作,以及如何解决它
A url 如果可以找到匹配的子字符串,则匹配,空字符串 r''
因此匹配 每个 字符串。
您应该使用 anchors 来指定字符串的开始 (^
) 和结束 ($
):
urlpatterns = [
# ↓ ↓ anchors
url(<b>r'^/$'</b>, views.home, name='blog-home'),
url(r'^about/', views.about, name='blog-about'),
]
Note: As of django-3.1,
url(…)
[Django-doc] is deprecated in favor ofre_path(…)
[Django-doc]. Furthermore a new syntax for paths has been introduced with path converters: you usepath(…)
[Django-doc] for that.