Django admin,自定义错误消息?

11 投票
3 回答
13056 浏览
提问于 2025-04-15 14:02

我想知道如何在Django的后台显示错误信息。

我网站上有一个私人用户区域,用户可以用“积分”来创建请求。每个请求会从用户的账户中扣除1或2个积分(这取决于请求的类型),所以如果账户里没有积分,用户就不能发起任何请求……在私人用户区域,这一切都没问题,但用户也可以打电话给公司进行请求,这时候我需要后台能在用户积分为0的情况下显示一个自定义的错误信息。

任何帮助都很不错哦 :)

谢谢大家

3 个回答

2

Django 1.2 之前的版本可以参考这个链接:https://docs.djangoproject.com/en/1.4/ref/contrib/messages/

from django.contrib import messages
messages.add_message(request, messages.INFO, 'Hello world.')
5

我之前用过内置的消息系统来处理这种情况。这个功能会在你添加或修改对象时,在屏幕顶部显示黄色的提示条。你也可以很简单地使用它:

request.user.message_set.create(message='Message text here')

可以查看这份文档了解更多信息。

21

一种方法是在管理页面上重写ModelForm。这样你就可以写自定义的验证方法,并且可以很干净地返回你想要的错误信息。可以像这样在admin.py文件中实现:

from django.contrib import admin
from models import *
from django import forms

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
    def clean_points(self):
        points = self.cleaned_data['points']
        if points.isdigit() and points < 1:
            raise forms.ValidationError("You have no points!")
        return points

class MyModelAdmin(admin.ModelAdmin):
    form = MyForm

admin.site.register(MyModel, MyModelAdmin)

希望这对你有帮助!

撰写回答