我的网址模式如下: (r'^ fb / custom /(?P [a-zA-Z0-9 +] *)/ admin /',include(custom_admin_site.urls)),
我覆盖了管理网站的admin_view方法:
def admin_view(self, view, cacheable=False):
def inner(request, *args, **kwargs):
if kwargs.has_key('custom_id'):
request.custom_id = kwargs.pop('custom_id')
return view(request, *args, **kwargs)
if not cacheable:
inner = never_cache(inner)
# We add csrf_protect here so this function can be used as a utility
# function for any view, without having to repeat 'csrf_protect'.
if not getattr(view, 'csrf_exempt', False):
inner = csrf_protect(inner)
return update_wrapper(inner, view)
这样我在视图方法(如index)中不需要参数custom_id。我的问题是我不能使用urlresolvers.reverse('custom-admin:index')。 如果我在没有参数的情况下使用它,我会收到此错误:
Page not found. Request URL: http://localhost:8000/fb/custom/(?P%3Ccustom_id%3E[a-zA-Z0-9%5C+]*)/admin/
好吧,不要惊讶。我没有提供参数custom_id。但是有了参数,我得到了这个错误:
reverse() got an unexpected keyword argument 'custom_id'
任何想法如何解决这个问题。我真的想使用反向查找。 url模板标记也存在同样的问题。
答案 0 :(得分:0)
您的网址格式存在一些问题:
所以最终,你的网址模式应如下所示:
(r'^fb/custom/(?P<custom_id>[\w]+)/admin/', include(custom_admin_site.urls)),
现在我不确定你是如何调用urlresolvers.reverse的,但是如果你需要传递args或kwargs,它应该看起来像其中之一:
urlresolvers.reverse('custom-admin:index', args=[custom_id])
或对于kwargs,例如上面包含的模式:
urlresolvers.reverse('custom-admin:index', kwargs={'custom_id':custom_id})