django中的用户错误消息

时间:2015-09-16 07:24:30

标签: html django

我有一个html页面,用户插入数据并单击确定按钮。 当按钮单击时,python函数正在检查一切是否正常,在这种情况下更新我的数据库。

在其中一个检查错误的情况下,我想向用户弹出一个消息,让他知道操作失败。

我做的是:

  if a<b:
     return render(request, 'main/error.html')

并且在error.html中我填写了错误详情。

然而,由于页面正在更改为error.html,因此这是非常不可避免的。 我想将这个错误消息作为Messege框或类似的东西给出...以便它保持在同一页面上。

问题是来自views.py我无法访问html页面并要求它弹出一个消息。

如果条件为假,我如何弹出一个消息?

1 个答案:

答案 0 :(得分:1)

您可以使用messaging framework在网页上显示消息:

  

在Web应用程序中,您需要在处理表单或其他类型的用户输入后向用户显示一次性通知消息(也称为“flash消息”)。

     

为此,Django为匿名和经过身份验证的用户提供对基于cookie和会话的消息传递的完全支持。消息框架允许您将消息临时存储在一个请求中并检索它们以便在后续请求(通常是下一个请求)中显示。每封邮件都标有一个特定的级别,用于确定其优先级(例如,信息警告错误

所提供的链接上有大量文档和示例。

编辑:示例

设置摘要( settings.py ):

INSTALLED_APPS = (
    ...
    'django.contrib.sessions',
    'django.contrib.messages',
    ...
)

MIDDLEWARE_CLASSES = (
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    ...
    'django.contrib.messages.middleware.MessageMiddleware',
    ...
)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR,  'templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...
                'django.contrib.messages.context_processors.messages',
            ],
            'debug': True,
        },
    },
]

在视图中:

from django.contrib import messages

if a < b:
    messages.warning("a is less than b.")

在模板中(使用bootstrap3的示例):

{% if messages %}
    <div class="messages">
        {% for message in messages %}
            <div class="alert alert-{{ message.tags }} alert-dismissible" role="alert">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
                {{ message }}
            </div>
        {% endfor %}
    </div>
{% endif %}