如何在Django中使用消息?

时间:2014-08-26 17:36:02

标签: python django python-2.7 django-forms django-views

下面,我有div,负责显示错误警告成功消息。但我只知道如何在成功案例中使用它。

这是我的 views.py

def registration(request):
    form = PersonForm(request.POST or None)

    if form.is_valid():
        save_it = form.save(commit=False)
        save_it.save()
        messages.success(request, 'Your form was saved') 

     <if checkbox not checked>  <<< is this possible ?
       messages.error(request, 'You must accept the terms to register')

    return render(request, 'provisioning/registration.html', {'form':form,})

这是我的 registration.py

    <div>
        ...
        {% if messages %}
            {% for message in messages %}
            <div {% if message.tags %} class="alert alert-{{ message.tags }}" {% endif %} alert-danger fade in">
                <button data-dismiss="alert" class="close close-sm" type="button">
                    <i class="fa fa-times"></i>
                </button>
                <strong>{{ message.tags }} | </strong> {{message}}
            </div>
            {% endfor %}
        {% endif %}
    </div>

我的问题是:如何在我的html页面中验证我的字段并显示一切是否正常?

例如,对于使用条款的协议有checkbox,对吧?如果用户没有检查过,如何使用这些消息告诉用户他需要接受使用条款进行注册。

2 个答案:

答案 0 :(得分:1)

如何使用clean方法?

def clean_agreement(self):
        data = self.cleaned_data
        if not data['agreement']:
            msg = u"You have to agree with the terms and conditions."
            self._errors["agreement"] = self.error_class([msg])
            return False
        return True

答案 1 :(得分:0)

为什么你不使用JavaScript来显示你的消息?它非常优雅,有更多的性能!你可以使用这样的函数:

var showMessage = function(element, msg, where) {
    var div = $('<div class="your_classname"><h3>' +msg+ '</h3>(' +
    gettext('click to close') + ')</div>');
    div.click(function(event) {
        $(".your_class_name").fadeOut("fast", function() { $(this).remove(); });
    });

    var where = where || 'parent';

    if (where == 'parent'){
        element.parent().append(div);
    }
    else {
        element.after(div);
    }

    div.fadeIn("fast");
};

但关于验证表单的问题请阅读 THIS 好食谱!您也可以使用Django教程中的 THIS ONE