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

时间:2012-03-06 15:47:01

标签: django django-templates django-middleware

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

示例网址用于说明问题:

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')

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

{{ view.kwargs.user_id }}

请参阅this回答

答案 2 :(得分:0)

对于基于函数的视图:

模板

{% url 'view' PARAM=request.resolver_match.kwargs.PARAM %}

views.py

def myview(request, PARAM):
    ...

Django 2.2