【发布时间】:2015-01-26 13:56:19
【问题描述】:
我有两个简单的基于类的通用视图,它们只是呈现一个模板。由于它们看起来几乎相同,并且我想保持干燥,所以我想问你,现在实现这一点的最聪明和最好的方法是什么:
第一次查看
class Foo(TemplateView):
template_name = "Foo.html"
def get_context_data(self, **kwargs):
user = User.objects.get(username = self.request.user)
context = super(Foo, self).get_context_data(**kwargs)
context['foo_objs'] = Foo.objects.filter(user = user.id)
return context
class Bar(TemplateView):
template_name = "bar.html"
def get_context_data(self, **kwargs):
user = User.objects.get(username = self.request.user)
context = super(Bar, self).get_context_data(**kwargs)
context['bar_objs'] = Bar.objects.filter(user = user.id)
return context
【问题讨论】:
-
您的用户查询是 a) 错误和 b) 不必要的。
self.request.user已经是 User 实例,不是用户名,所以根本不需要再次查询 User。 -
@DanielRoseman 有一个名为 User 的模型
标签: django django-views django-class-based-views