首页 > 解决方案 > Django flatpages 空路径与这些中的任何一个都不匹配

问题描述

在管理页面上,我将 Django 平面页面的 URL 设置为“/”,预计将在http://127.0.0.1:8000/处显示为主页。这样做我遇到了一个错误:

Request Method:     GET
Request URL:    http://127.0.0.1:8000/
Using the URLconf defined in core.urls, Django tried these URL patterns, in this order:
    admin/
    <path:url>
The empty path didn't match any of these.

但是,如果我用双斜杠访问http://127.0.0.1:8000//,那么主页会正确显示。我唯一的 urls.py 文件如下所示:

from django.contrib import admin
from django.urls import include, path
from django.contrib.flatpages import views

urlpatterns = [
    path('admin/', admin.site.urls),
]

urlpatterns += [
    path('<path:url>', views.flatpage),
]

我完全从官方指南中获取了所有代码。如何在http://127.0.0.1:8000/显示 django 平面主页?

标签: django

解决方案


除了 django.urls.path 方法,Django 还提供了 django.urls.re_path 方法。path 方法旨在针对精确字符串执行匹配,而 re_path 方法旨在针对基于正则表达式的模式字符串执行匹配。在我的情况下,以这种方式修复它就足够了:

urlpatterns += [
    re_path(r'^(?P<url>.*)$', views.flatpage),
]

结果,我们在http://127.0.0.1:8000/处得到了正确的请求处理。有关使用 path、re_path 方法的更多详细信息,请参见链接


推荐阅读