我在BaseView的设置功能中添加了mydata.

class BaseView(View):

def setup(self, request, *args, **kwargs):
    super().setup(request, *args, **kwargs)
    self.mydata = table.objects.all()

当我在子类的GET函数中打印它时,值是正确的,但我希望这个变量自动添加到模板文件中.

def get(self, request, pk=''):

print('self.active_apps in plan')
    print(self.active_apps)
    user_info = request.session.get('user_info')
    context = {'user_info':user_info}
    if pk != '':
        item = get_object_or_404(self.model_class, pk=pk)
        form = self.form_class(instance=item)
        context['form'] = form
        context['pk'] = pk
    else:
        form = self.form_class()
        context['form'] = form

    return render(request, self.template_name, context)

推荐答案

您正在寻找的可能是在视图中添加这个的not,而不是context processor [Django-doc].

我们可以这样定义这样的上下文处理器:

# my_app/context_processors.py


def table_data(request):
    return {'my_data': table.objects.all()}

然后将上下文处理器注册到settings.py:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'OPTIONS': {
            # …,
            'context_processors': [
                # …,
                'my_app.context_processors.table_data'
            ]
        },
    }
]

这将在您每次使用此后端呈现模板时,运行上下文处理器以进一步填充上下文.

因为查询集是惰性的,所以如果模板不"消耗"my_data,它也不会发出请求.但现在,如果我们这样呈现一个模板,我们可以列举my_data多个.

Django相关问答推荐

Django Model邮箱字段是必需的,即使在我将其设置为NULL=True和BLACK=True之后也是如此

如何从Django';S模型中的方法中检索值?

Django 相当于子查询

Django - 是否可以为查询集预取单个字段的多个过滤器?

Django 1.9:字段与父模型中不存在的字段的字段冲突

NoReverseMatch 错误

Django - 在模板中显示当前日期和时间

django 复数模板

如何在 Django Rest Framework SimpleRouter 上使斜杠可选

导入错误无法在windows环境下导入名称execute_manager

Django:从视图中添加 non_field_error?

如何重置 PostgreSQL 表上的 ID 序列

在 django admin 中链接到外键对象

Django 1.7 - 如何 suppress (1_6.W001)某些元素单元测试可能无法按预期执行.?

django - 使用 get_or_create 自动创建用户时设置用户权限

'function' 对象没有属性 'as_view'

Django 应用程序运行良好,但收到 TEMPLATE_* 警告消息

如何更改模型标签并给它一个自定义名称

在 Django 中查询 top x 元素

try 使用 pip 安装 django-heroku 时,出现错误ERROR: Command errored out with exit status 1: python.