Django:在 ModelAdmin.Media.js 中反转

Django: reverse in ModelAdmin.Media.js

这是我的url的配置。项目的主要urls.py是:

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

从这里我包括以下插件 urls:

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

问题出在插件 ModelAdmin 中,我尝试将 url 动态包含到 returns 一个 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)/$']

但是如果我硬编码已解决的 url,它会按预期工作:

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

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

使用 reverse_lazy() 而不是普通的 reverse()。在定义 ModelAdmin URLConf 时尚未加载。