我正在构建一个模板上下文处理器来调用我拥有的每个页面的PK,并且PK在base.html中调用它,我已经实现了与其他查询一起做模板上下文处理器,但现在我需要传递PK。上下文p
效果很好,但上下文edit
没有,我如何从基于函数的视图中调用PK?
例如:localhost:8000 / path / 8,我需要在上下文中传递8 edit
def my_processor(request):
context = {'edit':InfoPredioGeneral.objects.filter(pk=self.kwargs['pk']),
'p':InfoPredioGeneral.objects.filter(user_id=request.user).latest('id')}
return context
我知道它不起作用,因为self
并且kwargs
未定义。但是我该怎么做呢?
答案 0 :(得分:3)
您使用的是FBV而不是CBV,因此您使用的 self 应与类方法一起使用,回答您的问题,您应该传递 id 参数在视图中,做这样的事情:
def my_processor(request, id):
context = {'edit':InfoPredioGeneral.objects.filter(pk=id),
'p':InfoPredioGeneral.objects.filter(user_id=request.user).latest('id')}
return context
在你的urls.py中你应该写下这样的东西:
url(r'^path/(?P<id>\d+)', my_processor, name='my_processor')