我是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')),
]
答案 0 :(得分:2)
您的django应用有3条路线:
http://127.0.0.1:8000/admin/
进入Django admin
应用
http://127.0.0.1:8000/shop/
转到您的shop
应用
http://127.0.0.1:8000/blog/
转到您的blog
应用
而且由于您没有http://127.0.0.1:8000
的配置,因此会看到错误。
当django尝试将您的网址与可用网址列表匹配时,您会在错误中看到这一点。
如果要获取URL http://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并使其无法访问。
答案 1 :(得分:2)
创建一个将成为您的首页的视图。 从那里您应该链接到网站的其他区域。 不要把它引向管理员,这太荒谬了。
答案 2 :(得分:0)
您已经创建了一个 Django 项目并启动了两个应用程序。您应该有一个项目级 urls.py 文件,然后是每个应用的应用级 urls.py 文件。
为了更详细地解释这一点,假设我们的 Django 项目名为 config,我们的两个应用程序名为 app1 和 app2。您的项目级 urls.py 文件将位于 config/urls.py,可能包含以下内容:
5CS12
在这个文件中,我们为我们的管理面板指定了一个路由,它在您的本地服务器上将位于 http://127.0.0.1:8000/admin。我们还指定了一条回家路线,第二条路径为空字符串。这意味着当您导航到 http://127.0.0.1:8000/ 时,您将被定向到您的主页(对于上面的示例,我只使用了一个通用的内置视图)。立即路由到您的管理面板不是一个好主意。
我们还包含了其他两个应用的路径。这两行基本上说的是:“包括来自其他应用程序的网址”。现在我们需要创建两个 urls.py 文件,每个应用一个。在这个例子中,我将只关注 app1 的 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/app1/content 的路径。事实上,我们在这个文件中创建的任何新路径总是以 http://127.0.0.1:8000/app1/ 开头,因为我们已经在我们的项目级 urls.py 中告诉 Django 包含来自 app1 urls.py 文件的 url,所以我们已经基本上以 /app1/ 为所有这些路径的前缀。
如果您将 urls 配置视为一棵树,它可能也会有所帮助:
# app1/urls.py
from django.urls import path
from .views import AppContentView
urlpatterns = [
path('content/', AppContentView.as_view(),
name='app_content'),
]