【问题标题】:Django Pass custom variables to template while using default viewsDjango在使用默认视图时将自定义变量传递给模板
【发布时间】: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 传递给该变量?还是我需要创建一个全新的自定义视图来传递这个单一变量?

【问题讨论】:

    标签: python python-3.x django django-templates django-urls


    【解决方案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,通常我可以在视图中使用。)
    • 像这样:stackoverflow.com/questions/4838480/… 但对于较新的 django 版本
    • @figbar:request 对象也被传递给模板,因此您可以例如在模板中写入{% if request.user.is_authenticated %}...{% endif %}
    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2011-09-10
    • 2012-02-26
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多