在我的django驱动的应用程序中,只有一个明显的情况可能会出现"IntegrityError".
那么,我如何捕获该错误并使用模板显示消息?
Joe*_*Joe 146
只需使用try和catch.
from django.db import IntegrityError
from django.shortcuts import render_to_response
try:
# code that produces error
except IntegrityError as e:
return render_to_response("template.html", {"message": e.message})
Run Code Online (Sandbox Code Playgroud)
如果需要,可以使用模板中的消息.
编辑
感谢Jill-JênnVie,您应该使用e.__cause__,如此处所述.
Chi*_*ael 10
如果您在CreateView mixin中使用基于类的视图,则需要"尝试"调用超类的form_valid,例如:
from django.db import IntegrityError
...
class KumquatCreateView(CreateView):
model = Kumquat
form_class = forms.KumquatForm
...
def form_valid(self, form):
...
try:
return super(KumquatCreateView, self).form_valid(form)
except IntegrityError:
return HttpResponse("ERROR: Kumquat already exists!")
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用模板render_to_response等使输出更好.
| 归档时间: |
|
| 查看次数: |
62831 次 |
| 最近记录: |