如何将变量发送到由通用视图调用的模板

Posted

技术标签:

【中文标题】如何将变量发送到由通用视图调用的模板【英文标题】:how to send a variable to a template called by a generic view 【发布时间】:2013-06-27 11:01:31 【问题描述】:

在我的 django 项目中,我必须创建一些静态页面,例如帮助页面、关于我们的页面、常见问题页面等,并且我需要在这些页面的某个位置显示用户名,但是由于它们是由通用视图调用的,当涉及通用视图时,我不知道如何将变量发送到模板。

提前致谢。

【问题讨论】:

我认为您的问题已经在这里得到解答:[***.com/questions/7470539/… [1]:***.com/questions/7470539/… 【参考方案1】:

查看@Jingo 所说的帖子,如果您想为通用视图添加一些变量,只需覆盖“get_context_data”函数即可。

class ExampleView(TemplateView): # Or another generic view
    template_name = "example.html"

    def get_context_data(self, **kwargs):
        context = super(ExampleView, self).get_context_data(**kwargs)
        #If you dont call 'super', you wont have the context processor varibles
        #  like 'user'
        context['var_name'] = "var content" # you can add template variables!
        return context # dont forget to return it!

【讨论】:

【参考方案2】:

在这种情况下,如果您使用 djangos 身份验证系统,则无需将用户名传递给模板。您可以在模板中访问 request.user。看看这里How to access the user profile in a Django template?。无论如何,如果您想将其他变量传递给通用视图,请查看此处How to pass parameters to django generic views。

【讨论】:

以上是关于如何将变量发送到由通用视图调用的模板的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 ajax 调用将 urdu 字符串视图发送到控制器,但它在控制时始终为空

Django如何将数据从视图发送到模板

将变量发送到添加的子视图视图控制器

将 url 参数发送到通用视图,该视图将其发送到 ModelForm 中的元素

如何覆盖 django 模板渲染方法处理

在django中渲染模板后如何在我的视图中调用一些逻辑