Django项目:名称空间' admin'并不是唯一的

时间:2017-12-21 21:59:10

标签: django migration unique admin models

试图运行C:\ Python34 / python manage.py makemigrations,我收到以下错误:

错误

WARNINGS: ?: (urls.w005) URL namespace 'admin' isn't unique. You may not be able to reverse all URLS in this namespace

我究竟需要更改什么以及需要查看哪些内容?

教师/ 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')),
]

主要/ url.py

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

]

我已粘贴上面的各种url.py文件,并想象它在那里的某个地方是个问题。有谁能请我指出正确的方向,请说明一下吗?

我认为我可以/应该删除

路径(' admin /',admin.site.urls),

除了urls.py文件(root)以外的所有内容.....当我删除它时,我没有得到同样的错误,但我不知道这是否会导致其他问题如果这是正确的做法?

3 个答案:

答案 0 :(得分:3)

你宣布

path('admin/', admin.site.urls),
在你的网址文件中

三次。您只需在项目的 root urls.p y中声明一次。

答案 1 :(得分:1)

您的错误源于在所有url.py文件中重复path('admin/', admin.site.urls),。它通常只在其他人指出的根级别声明。

想想这样 - 你不会想为每个应用程序设置一个单独的管理界面,而是希望能够从一个管理界面管理所有应用程序,这正是你发生的事情。只在root urls.py文件中使用它。

此外,尽管应用程序应该是模块化且独立的,但它们仍然需要连接到项目才能工作。

答案 2 :(得分:0)

这是因为该管理路径的多个声明。从项目的url.py之外的urls.py文件中删除那些多余的 path('admin /',admin.site.urls)行。