繁体   English   中英

如何将其他数据添加到Django消息中?

[英]How can I add additional data to Django messages?

我正在尝试将此代码段集成到我们的Django项目中:

它只是消息的自定义HTMLCSS

html看起来像这样:

<div class="bs-calltoaction bs-calltoaction-success">
    <div class="row">
        <div class="col-md-9 cta-contents">
            <h1 class="cta-title">Its a Call To Action</h1>
            <div class="cta-desc">
                <p>Describe the action here.</p>
                <p>Describe the action here.</p>
                <p>Describe the action here.</p>
            </div>
        </div>
        <div class="col-md-3 cta-button">
            <a href="#" class="btn btn-lg btn-block btn-default">Go for It!</a>
        </div>
     </div>
</div>

因此,如果我想将其与消息框架集成,可以执行以下操作:

{% for message in messages %}
    <div class="bs-calltoaction bs-calltoaction-{{ message.tags }}">
        <div class="row">
            <div class="col-md-9 cta-contents">
                {{ message }}
            </div>
            <div class="col-md-3 cta-button">
                <a href="#" class="btn btn-lg btn-block btn-default">Go for It!</a>
            </div>
         </div>
    </div>
{% endfor %}

但是我想指定标头<h1>和子消息列表<p>所以我需要向消息中添加诸如字典之类的东西,该字典可以包含其他属性,例如{'title':'This is a title','submessages':[1,2,3]}所以我可以这样做:

{% for message in messages %}
    <div class="bs-calltoaction bs-calltoaction-{{ message.tags }}">
        <div class="row">
            <div class="col-md-9 cta-contents">
                <h1 class="cta-title">{{ message.title }}</h1>
                <div class="cta-desc">
                    <p>{{ message.submessages.0 }}</p>
                    <p>{{ message.submessages.1 }}</p>
                </div>
            </div>
            <div class="col-md-3 cta-button">
                <a href="#" class="btn btn-lg btn-block btn-default">Go for It!</a>
            </div>
         </div>
    </div>
{% endfor %}

是否可以使用Django消息? 还是您会建议另一种方法? 我可以将此类变量传递到上下文中,但如果可能的话,我想使用消息。

您可以使用extra_tags messages属性获得一定程度的自由度。

参见https://docs.djangoproject.com/zh-CN/1.11/ref/contrib/messages/#adding-extra-message-tags

因此,您可以针对不同的号召性extra_tags使用不同的extra_tags ,例如

# views.py
messages.success(request, 'You have signed up', extra_tags='suggest_upgrade')

要么:

messages.success(request, 'You have signed up', extra_tags='suggest_share')

接着:

{% for message in messages %}

    {% if 'suggest_upgrade' in message.extra_tags %}
        <h1>Get these extra features</h1>
        <p>info here</p>
    {% elif 'suggest_share' in message.extra_tags %}
        <h1>Share with friends</h1>
        <p>other info here</p>
    {% endif %}

{% endfor %}

您甚至可以将子消息作为标签本身传递,尽管它可能不是为此目的而设计的:

messages.success(request, 'Main message here', extra_tags='submessage here')

接着:

{% for message in messages %}

    <h1>{{ message }}</h1>
    <p>{{ message.extra_tags }}</p>

{% endfor %}

消息不必要是字符串。 在您的情况下,使用字典就可以了:

messages.success(request, {'title':'This is a title','submessages':[1,2,3]})

然后在您的模板中:

{% for message in messages %}
    <div class="bs-calltoaction bs-calltoaction-{{ message.tags }}">
        <div class="row">
            <div class="col-md-9 cta-contents">
                <h1 class="cta-title">{{ message.message.title }}</h1>
                <div class="cta-desc">
                    <p>{{ message.message.submessages.0 }}</p>
                    <p>{{ message.message.submessages.1 }}</p>
                </div>
            </div>
            <div class="col-md-3 cta-button">
                <a href="#" class="btn btn-lg btn-block btn-default">Go for It!</a>
            </div>
         </div>
    </div>
{% endfor %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM