class BaseMixin(object):
def get(self,request,*args,**kwargs):
context = super(BaseMixin,self).get(request,*args,**kwargs)
try:
if request.user.is_authenticated():
context['article_count'] = Article.objects.filter(user_id=request.user.id).count()
except Exception as e:
logger.error(''.join(e))
return context
class BaseMixinTest(object):
def get_context_data(self,*args,**kwargs):
context = super(BaseMixinTest,self).get_context_data(*args,**kwargs)
try:
if request.user.is_authenticated():
context['article_count'] = Article.objects.filter(user_id=request.user.id).count()
except Exception as e:
logger.error(''.join(e))
return context
我是想,如果用户登录,在导航中显示用户发布的内容条数
我自己写的这两个视图都是不成功,第一个视图没有数据,第二个视图BaseMixinTest提示request错误
Mixin
这个概念的出现是为了进行功能复用,但是它本身并不能直接作为视图,只是为功能的实现提供一个抽象的逻辑。打个比方:你不会做番茄炒蛋,但网上有现成的动画教程。那教程里的人操纵的不是真正的番茄和蛋,但是却提供了一个完整的流程。你要实际操作时,只要把真正的番茄和蛋套上去即可。
通常,
Mixin
要配合Class Based View
使用,以类继承的方式聚合功能。一个可能的视图:至于你的第二个问题,通常来说
request
会包含在args
和kwargs
中,需要显式解包: