我正在关于Django 1.10的网站上工作,我正在尝试设置我的管理站点,因此URL位于" / pcari / admin"而不是" / admin"
这是我的根urls.py:
child_uid
这是我的app urls.py:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
# Admin site
url(r'^admin/', admin.site.urls),
# Regular site
url(r'^pcari/', include('pcari.urls')),
]
如果我访问" 127.0.0.1:8000 / pcari / admin"这个设置技术上就可以了。我得到了管理站点,但如果我访问" 127.0.0.1:8000 / admin"我也会得到管理站点,这是我不想要的。
但是,如果我删除" url(r' ^ admin /',admin.site.urls),"来自根urls.py文件的行,当我尝试访问" 127.0.0.1:8000 / pcari / admin":
时出现一个奇怪的错误from django.conf.urls import url
from django.contrib import admin
from . import views
app_name = 'pcari'
urlpatterns = [
# Admin site
url(r'^admin/', admin.site.urls),
# User-facing views
url(r'^$', views.index, name='index'),
...
]
答案 0 :(得分:1)
在主urls.py
中urlpatterns = [
# Admin site
url(r'^pcari/admin/', admin.site.urls),
# Regular site
url(r'^pcari/', include('pcari.urls')),
]
并从应用网址中删除管理网址
答案 1 :(得分:0)
但是,如果我删除" url(r' ^ admin /',admin.site.urls),"来自根urls.py文件的行,当我尝试访问" 127.0.0.1:8000 / pcari / admin"时出现了一个奇怪的错误:
NoReverseMatch at /pcari/admin/
u'admin' is not a registered namespace
Request Method: GET
Request URL: http://127.0.0.1:8000/pcari/admin/
Django Version: 1.10.5
Exception Type: NoReverseMatch
Exception Value:
<强>原因:强>
当您从主urls.py中删除url(r'^admin/', admin.site.urls),
时,这意味着您没有任何管理员命名空间,因为此行已注册&#34; admin&#34;在django代码中定义的命名空间。 https://github.com/django/django/blob/master/django/contrib/admin/sites.py#L279
此行显示django admin将注册为&#34; admin&#34;命名空间
当您在&#34; pcari&#34;中删除并添加管理网站时应用程序,这意味着这个应用程序是注册名称空间&#34; pcari&#34;。但是在django管理模板中有像{%url admin:index%}这样的模板中的硬编码网址,它给出了NoReverseMatch异常 https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/base.html#L44 django模板中存在导致错误的硬编码管理命名空间
修改强>
您在应用网址中添加了
app_name = 'pcari'
创造了这个Noreverse问题。删除此应用名称行。因为如果你添加它,它将作为pacri命名空间。