我将为CRUD操作提供基于标准类的标准视图,这些视图继承自各种通用视图(如ListView,DetailView等)。
我将设置所有的
context_object_name
属性具有相同的值。
我想知道是否有一种方法可以使用更多的pythonic方法,而不是在代码中多次重复该操作,而是可以在必要时将变量更改为一个地方?
ps。我想到的当然是进一步的继承,但是也许还有一些类似django的方式?
答案 0 :(得分:0)
class SetContextObjectNameMiddleware:
def process_template_response(self, request, response):
if 'object' in response.context_data:
response.context_data['foo'] = response.context_data['object']
return response
然后将中间件添加到您的settings.py
这并不是真正设置视图的context_object_name
,但是可以达到相同的结果。
答案 1 :(得分:0)
您还可以使用mixin代替中间件应用程序:
class CommonContextMixin(object):
def get_context_data(self, *args, **kwargs):
context = super(CommonContextMixin, self).get_context_data(*args, **kwargs)
context['foo'] = 'bar'
return context
然后在您的视图中使用该混合:
class MyView(TemplateView, CommonContextMixin):
""" This view now has the foo variable as part of its context. """
相关的Django文档:https://docs.djangoproject.com/en/2.1/topics/class-based-views/mixins/