当我尝试获取我的主要 url 模式时出错



我是 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.

相关内容

  • 没有找到相关文章

最新更新