Django在使用默认视图时将自定义变量传递给模板

Posted

技术标签:

【中文标题】Django在使用默认视图时将自定义变量传递给模板【英文标题】:Django Pass custom variables to template while using default views 【发布时间】:2020-10-16 09:54:59 【问题描述】:

我目前正在使用默认的 django 视图 (PasswordChangeView),但我有自己的自定义模板,我想使用它。我通过写这个来实现这一点:

path('changepassword/', PasswordChangeView.as_view(template_name='account/change_password.html', 
                                     success_url = '/changepassword/'), name='password_change'),

但是在那个模板中有一个像这样的变量: var 。有没有办法可以将值从 urls.py 传递给该变量?还是我需要创建一个全新的自定义视图来传递这个单一变量?

【问题讨论】:

【参考方案1】:

是的,你可以传递额外的参数:

path(
    'changepassword/',
    PasswordChangeView.as_view(
        template_name='account/change_password.html', 
        success_url = '/changepassword/'
    ),
    name='password_change',
    kwargs='var': value_of_var
),

value_of_var 替换为应使用的值 var 。这是可行的,因为 URL 参数也作为变量传递给模板。

【讨论】:

抱歉,我的问题不够具体。这适用于固定值变量,但是有没有办法根据“请求”传递东西? (比如request.user.is_anonymous,通常我可以在视图中使用。) 像这样:***.com/questions/4838480/… 但对于较新的 django 版本 @figbar:request 对象也被传递给模板,因此您可以例如在模板中写入% if request.user.is_authenticated %...% endif %

以上是关于Django在使用默认视图时将自定义变量传递给模板的主要内容,如果未能解决你的问题,请参考以下文章

渲染 Marionette/Backbone 视图时将变量传递到 Handlebars 模板

如何将变量传递给自定义 Django 模板加载器?

Django将变量传递给模板

将模板中的按钮中的 id 传递给 Django 视图

如何在 django 的基于类的视图中将值传递给模板?

将自定义变量传递给 Formstone