我是 Django 的初学者,我创建了一个 Django 项目,当我在两个应用程序中添加 urls.py 文件时,我又包含一个应用程序两者都运行良好,但是当我获取我的主管理员 URL 时,它给出了一个错误
Page not found (404)
Request Method: GET
URL: http://127.0.0.1:8000/
the URLconf defined in mac.urls, Django tried these URL patterns, in this order:
admin/
shop/
blog/
The empty path didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to
False, and Django will display a standard 404 page.
当我在http://127.0.0.1:8000/
中获取此 URL 时,我收到一个错误,它适用于http://127.0.0.1:8000/shop/
这是我的主要 urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('shop/', include('shop.urls')),
path('blog/', include('blog.urls')),
]
你的 django 应用程序有 3 条路由:http://127.0.0.1:8000/admin/
转到 djangoadmin
应用程序http://127.0.0.1:8000/shop/
转到你的shop
应用程序http://127.0.0.1:8000/blog/
转到你的blog
应用程序
由于您没有http://127.0.0.1:8000
配置,因此您会看到一个错误。
你可以在错误中看到这一点,当 django 尝试将你的 url 与可用 url 列表匹配时。
如果要在 urlhttp://127.0.0.1:8000
上获取管理应用,请将urls.py
更改为:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('', admin.site.urls),
path('shop/', include('shop.urls')),
path('blog/', include('blog.urls')),
]
通常不建议将管理应用程序设置为根 url - 它内部有自己的 url 系统 (admin/<app_name>/<model_name>
(,因此它很可能会隐藏您的 url 并使无法访问。
创建一个将成为您的首页的视图。 从那里您应该链接到您网站的其他区域。 不要将其定向到管理员,这很荒谬。
你已经创建了一个 Django 项目并启动了两个应用程序。你应该有一个项目级 urls.py 文件,然后是每个应用的应用级 urls.py 文件。
为了更详细地解释这一点,假设我们的 Django 项目称为 config,我们的两个应用程序称为 app1 和 app2。项目级 urls.py 文件(位于 config/urls.py(可能包含以下内容:
# config/urls.py
from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateView
urlpatterns = [
path('admin/', admin.site.urls),
path('', TemplateView.as_view(template_name='home.html'),
name='home'),
path('app1/', include('app1.urls')),
path('app2/', include('app2.urls')),
]
在此文件中,我们为管理面板指定了一条路由,该路由在您的本地服务器上将位于 http://127.0.0.1:8000/admin。我们还指定了一个主路由,即带有空字符串的第二个路径。这意味着当您导航到 http://127.0.0.1:8000/时,您将被定向到您的主页(对于上面的示例,我只是使用了通用的内置视图(。立即路由到管理面板不是一个好主意。
我们还提供了其他两个应用的路径。这两行本质上是:"包括来自其他应用程序的URL"。现在我们需要创建两个 urls.py 文件,每个应用程序一个。在此示例中,我将只关注 app1 的 urls.py 文件:
# app1/urls.py
from django.urls import path
from .views import AppContentView
urlpatterns = [
path('content/', AppContentView.as_view(),
name='app_content'),
]
这是您必须创建的视图,但我们现在所做的是,我们已经创建了一个将位于 http://127.0.0.1:8000/app1/content 的路径。事实上,我们在此文件中创建的任何新路径都将始终以 http://127.0.0.1:8000/app1/开头,因为我们已经在项目级 urls.py 中告诉 Django 包含 app1 urls.py 文件中的 url,因此我们基本上在所有这些路径上都添加了/app1/前缀。
如果您将 url 配置视为树,它也可能有所帮助:
Project Level Url Configs.
|
|
|
___________________________
| |
| |
App 1 Url Configs. App 2 Url Configs.