访问模板或中间件中的命名URL参数

Sja*_*aak 5 django django-templates django-middleware

在我的url conf中,我有几个URL具有相同的命名参数user_id.是否可以在中间件中访问此参数 - 因此我可以将其一般性地传递给context_data - 或模板本身?

示例URL conf用于说明问题:

url(r'^b/(?P<user_id>[0-9]+)/edit?$', user.edit.EditUser.as_view(), name='user_edit'),
url(r'^b/(?P<user_id>[0-9]+)/delete?$', user.delete.DeleteUser.as_view(), name='user_delete')
Run Code Online (Sandbox Code Playgroud)

Anu*_*pam 12

对于基于类的视图,view已经在上下文中可用,因此您不需要在视图端做任何事情。在模板中,只需执行以下操作:

{{ view.kwargs.user_id }}
Run Code Online (Sandbox Code Playgroud)

看到这个答案

  • 这应该是公认的答案,因为这不需要额外的代码。 (3认同)

Chr*_*att 5

如果您需要在模板中使用此数据,只需覆盖视图的get_context_data方法:

class MyView(View):
    def get_context_data(self, **kwargs):
        context = super(MyView, self).get_context_data(**kwargs)
        context['user_id'] = self.kwargs.get('user_id')
        return context
Run Code Online (Sandbox Code Playgroud)