【问题标题】:Djange reverse() to an admin URL not working in management commandDjango reverse() 到在管理命令中不起作用的管理 URL
【发布时间】:2023-04-05 05:52:01
【问题描述】:

我有一个项目 (myproj),其中包含多个应用程序。一个应用程序(myapp)有一个我正在努力解决的管理命令。我希望此命令发送一封电子邮件,其中包含管理站点上模型实例的 URL。但我不断收到此错误ImproperlyConfigured: The included urlconf XXX doesn't have any patterns in it(其中 XXX 是某个数字)。

其他一切似乎都有效。当我访问“/admin/myapp”页面时,我的所有模型都会出现,我可以执行其中的每个操作。因此,我的 url 模式似乎并不是一个错误。我感觉管理命令没有加载 url 模式,这就是它失败的原因,但我不知道如何让它这样做。

一些缩写代码。全部在 python 2.7.6 上。 Django 1.5.5

myproj/myproj/urls.py

​​>
from __future__ import absolute_import, unicode_literals
from django.conf.urls import patterns, include, url
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
    url(r'^auth/', include('django.contrib.auth.urls')),
    url(r'^admin/', include(admin.site.urls)),

    # Other app includes, but none for myapp as it is strictly admin
)

myproj/myapp/urls.py

​​>
from __future__ import absolute_import, unicode_literals
from django.conf.urls import patterns, url

urlpatterns = patterns('',

)

myproj/myapp/management/commands/my_command.py

​​>
from __future__ import absolute_import, unicode_literals
from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):
    def handle(self, *args, **options):
        from ... import do_stuff
        do_stuff()

myproj/myapp/__init__.py

​​>
from __future__ import absolute_import, unicode_literals
# Tried: also reverse_lazy, just delays the exception
from django.core.urlresolvers import reverse

def do_stuff():
    # Tried here: import myproj.urls

    # Work...
    # Exception here
    a_url = reverse('admin:myapp_mymodel_change', a_model.pk)
    # Work...

    # Send email here
    # Exception here if using reverse_lazy

【问题讨论】:

  • urlpatterns = patterns('', ) ... ImproperlyConfigured: The included urlconf XXX doesn't have any patterns in it. 你确定 /myproj/myapp 中的空白 URLConf 有效吗?为什么会在那里? (如果您无话可说,您甚至不必拥有urls.py。)

标签: python django django-admin django-urls


【解决方案1】:

精氨酸。我是个白痴。应该是:

reverse('admin:myapp_mymodel_change', args=(a_model.pk,))

【讨论】:

    猜你喜欢
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2012-05-04
    相关资源
    最近更新 更多