Django - 将变量从基于类的视图传递到模板

Posted

技术标签:

【中文标题】Django - 将变量从基于类的视图传递到模板【英文标题】:Django - Passing a variable from Class Based Views to Template 【发布时间】:2021-03-31 20:50:24 【问题描述】:

在基于函数的视图中,我可以像这样传递变量:

def zip(request):

    check_for_zipcode = request.user.profile.location

    zipcodes = 
        'check_for_zipcode' : check_for_zipcode
    
    return render(request, 'front/post_form.html',  zipcodes)

然后我就可以在我的 HTML 中访问check_for_zipcode。但是我将如何在基于类的视图中做到这一点?假设我有以下基于类的视图。

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    fields = ['title', 'content', 'post_image', 'title2', 'content2', 'post_image2']

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

我如何将check_for_zipcode = request.user.profile.location 传递到基于类的视图中?

【问题讨论】:

【参考方案1】:

您可以在 get_context_data 方法中编辑上下文数据。

def get_context_data(self, **kwargs):
    check_for_zipcode = self.request.user.profile.location
    context = super().get_context_data(**kwargs)
    context['zipcodes'] = 'check_for_zipcode' : check_for_zipcode
    return context

现在您可以像以前一样访问 html 中的变量了

【讨论】:

以上是关于Django - 将变量从基于类的视图传递到模板的主要内容,如果未能解决你的问题,请参考以下文章

Django - 将变量从函数视图传递到 html 模板

从基于类的视图模板中的 django 打印变量

Django将变量传递给模板

Django:从模板中访问会话变量?

无法将参数从模板传递到 Django 视图

Django,如何将变量从 Django 管理员传递到模板?