Django 项目:命名空间 'admin' 不是唯一的
Django Project: namespace 'admin' isn't unique
在尝试 运行 C:\Python34/python manage.py 进行迁移时,我收到以下错误:(遵循 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 文件,并认为这是某个地方的问题。谁能给我指出正确的方向,并给出解释?
我考虑过 could/should 移除
路径('admin/', admin.site.urls),
除了 urls.py 文件(root)之外的所有文件......当我删除它时,我没有得到同样的错误,但我不知道这是否会导致其他问题如果这是正确的做法?
您正在声明
path('admin/', admin.site.urls),
在您的网址文件中重复三次。您只需在项目的 root urls.py 中声明一次即可。
您是正确的,错误源于在所有 url.py 文件中重复 path('admin/', admin.site.urls),
。正如其他人指出的那样,它通常只在根级别声明。
这样想 - 您不希望每个应用程序都有一个单独的管理界面,而是希望能够从一个管理界面管理您的所有应用程序,这正是您在仅在根 urls.py 文件中。
此外,虽然应用程序应该是模块化和独立的,但它们仍然需要连接到项目才能工作。
这是因为该管理路径的多个声明。从 urls.py 文件中删除那些额外的 path('admin/', admin.site.urls) 行,除了项目的 url.py
将你的 main/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')),
]
在尝试 运行 C:\Python34/python manage.py 进行迁移时,我收到以下错误:(遵循 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 文件,并认为这是某个地方的问题。谁能给我指出正确的方向,并给出解释?
我考虑过 could/should 移除
路径('admin/', admin.site.urls),
除了 urls.py 文件(root)之外的所有文件......当我删除它时,我没有得到同样的错误,但我不知道这是否会导致其他问题如果这是正确的做法?
您正在声明
path('admin/', admin.site.urls),
在您的网址文件中重复三次。您只需在项目的 root urls.py 中声明一次即可。
您是正确的,错误源于在所有 url.py 文件中重复 path('admin/', admin.site.urls),
。正如其他人指出的那样,它通常只在根级别声明。
这样想 - 您不希望每个应用程序都有一个单独的管理界面,而是希望能够从一个管理界面管理您的所有应用程序,这正是您在仅在根 urls.py 文件中。
此外,虽然应用程序应该是模块化和独立的,但它们仍然需要连接到项目才能工作。
这是因为该管理路径的多个声明。从 urls.py 文件中删除那些额外的 path('admin/', admin.site.urls) 行,除了项目的 url.py
将你的 main/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')),
]