python - 如何向 Django 消息添加额外的数据?

标签 python django python-2.7 django-1.10 django-messages

我正在尝试整合 this片段到我们的 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 %}

但我想指定 header <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 消息属性获得一定程度的自由。

参见 https://docs.djangoproject.com/en/1.11/ref/contrib/messages/#adding-extra-message-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 %}

关于python - 如何向 Django 消息添加额外的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43588876/

相关文章:

python - python中 "%0.6X"和 "%06X"有什么区别?

python - 在列表中均匀分布(Google Foobar : Maximum Equality)

集成在 GTK3/PyGObject 中的 Python 网络/tcp 包

python - 为什么第一个值发生变化而第二个值没有变化?

python - 在 python 中模拟 zipfile

Python 列表索引超出范围

python - Python 中的 AWS Elastic Beanstalk 环境变量

google-app-engine - 如何让 cron 与特定的应用程序引擎模块一起工作?

sql - 慢速 SQL 事务从 Postgres 中的表中获取最新的时间戳行

python - Django pytest 断言错误 : should return body unicode