Django项目:命名空间 'admin' 不唯一

13
在尝试运行C:\Python34/python manage.py makemigrations时,我遇到了以下错误:(按照www.testandtrack.io的教程操作)。 错误
WARNINGS: ?: (urls.w005) URL namespace 'admin' isn't unique. You may not be able to reverse all URLS in this namespace

我需要做哪些更改,需要在哪里查找?

teachers/url.py

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

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

url.py

from django.contrib import admin
from django.urls import include, path
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('main.urls')),
    path('teachers/', include('teachers.urls')),
]

main/url.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('header/', views.header, name='header'),
    path('', views.index, name='index'),
    
]

我已经粘贴了各种url.py文件,想象一下问题可能出在哪里。 请有人指点我正确的方向,并加以解释?
我考虑过我可以 / 应该从除了urls.py文件(根)之外的所有路径中删除 path('admin/', admin.site.urls),
当我这样做时,我不会得到相同的错误,但我不知道这会引起其他问题,也不知道是否应该这样做?
5个回答

21

你正在声明

path('admin/', admin.site.urls),

在您的URL文件中,需要三次重复声明。您只需在项目的根URL文件中声明一次即可。


8
您说得对,错误源于在所有的url.py文件中重复使用path('admin/', admin.site.urls),它通常只在根级别声明,正如其他人所指出的那样。
可以这样理解-您不会想为每个应用程序都有单独的管理界面,相反,您希望能够从一个管理界面中管理所有应用程序,这正是仅将其放在根urls.py文件中时发生的情况。
此外,尽管应用程序应该是模块化和独立的,但它们仍需要连接到项目才能工作。

2

将您的主要/urls.py设置为

from django.urls import path
from django.views.generic import TemplateView

urlpatterns = [ 
    path(
        "header/", 
        TemplateView.as_view(template_name="header.html")),
]

请在主URL文件teachers/urls.py中进行以下修复:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings


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

0

这是由于该管理员路径的多个声明导致的。除了项目的url.py文件之外,从urls.py文件中删除这些额外的path('admin/', admin.site.urls)行。


0

存在一个管理员路径的重复 在文件 urls 中搜索。 并删除重复路径


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接