【问题标题】:Django Admin urlsDjango 管理员网址
【发布时间】:2017-05-23 09:17:01
【问题描述】:

我想在我的 Django 应用程序中通过反向 url 直接使用管理网站,但我收到此错误:No module named admin.site.urls

我有 urls.py 文件,看起来像:

import os
from django.conf.urls import url, include
from django.contrib import admin
from django.conf.urls.static import static
from django.conf import settings

from BirthCertificate import views
from Identity import views
from Accueil import views
from log import views
from Mairie import views
from Table import views
from Recensement import views
from Configurations import views
from Mariage import views

import debug_toolbar

from django.views.generic.base import TemplateView


urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name=os.path.join(settings.BASE_DIR, 'Accueil/templates/Choice.html')),
        name='choice'),
    url(r'^admin/', include('admin.site.urls')),
    url(r'^BirthCertificate/', include('BirthCertificate.urls')),
    url(r'^Identity/', include('Identity.urls')),
    url(r'^Accueil/', include('Accueil.urls')),
    url(r'^Home/', include('log.urls')),
    url(r'^Mairie/', include('Mairie.urls')), 
    url(r'^Table/', include('Table.urls')), 
    url(r'^Recensement/', include('Recensement.urls')),
    url(r'^Configurations/', include('Configurations.urls')),
    url(r'^__debug__/', include(debug_toolbar.urls)),
    url(r'^Mariage/', include('Mariage.urls')),
] 

我的一个 HTML 模板有:

{% if request.user|has_group:"admin" %}
    <li><a href="{% url "admin" %}" ><span class="glyphicon glyphicon-log-out"></span> Administration </a></li>
{% endif %}

有什么问题吗? 我没有找到如何解决这个错误..

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    In Django 1.9+,你不需要使用include。使用可调用的admin.site.urls,而不是字符串'admin.site.urls'

    url(r'^admin/', admin.site.urls),
    

    In Django 2.0+,你可以用path()代替url()

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

    In Django < 1.9 你将admin.site.urls 传递给include

    url(r'^admin/', include(admin.site.urls)),
    

    要反转管理索引 url,请将模板中的 url 标签更改为:

    {% url "admin:index" %}
    

    【讨论】:

    • 谢谢,但我收到此错误:Reverse for 'admin' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 我想直接访问模板中带有 url 的 django 管理页面,可以吗?
    • 那是因为admin 只是命名空间。您还需要包含 url 模式的名称,例如{% url "admin:index" %} 用于管理索引。
    • 我正在将应用程序从 Django 1.11 升级到 4.0.3,似乎对我有用的变体是:re_path(r'^admin/', admin.site.urls)
    • @GrahamKlyne 是的,re_path() 可以工作,但我的答案中的path() 行也应该是what the docs suggest
    猜你喜欢
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2016-01-25
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2019-09-21
    相关资源
    最近更新 更多