Django:在ModelAdmin.Media.js中反转

时间:2015-03-23 13:39:23

标签: python django django-urls

这是我的网址配置。该项目的主要urls.py是:

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

从这里我包含以下插件网址:

urlpatterns = patterns('',
    url(r'^jsconfig/', 'plugins.views.js_config', name='plugins_js_config'),
)

问题出在Plugin ModelAdmin中,我尝试动态地将url包含到返回text/javascript页面的视图

class PluginConfigurationAdmin(admin.ModelAdmin):
    class Media:
        js = (reverse('plugins_js_config'),)

admin.site.register(PluginConfiguration, PluginConfigurationAdmin)

一旦我尝试加载任何管理页面,我就会收到以下错误:

NoReverseMatch at /admin/
Reverse for 'app_list' with arguments '()' and keyword arguments '{'app_label': u'plugins'}' not found. 1 pattern(s) tried: [u'admin/(?P<app_label>auth)/$']

但是如果我对已解析的网址进行硬编码,它会按预期工作:

class Media:
    js = ('/plugins/jsconfig/',)

为什么我无法在admin.py页面中进行反向工作?感谢

1 个答案:

答案 0 :(得分:2)

使用reverse_lazy()代替普通reverse()。在定义ModelAdmin URLConf时尚未加载。