我的views.py中有类似的内容
instance = get_object_or_404(register,pk=request.user.id)
Run Code Online (Sandbox Code Playgroud)
现在,如果没有与此用户相关的对象,我会收到标准的Django 404错误消息,说找不到匹配项。我想要的是代替接收此404错误,将其重定向到另一个页面,例如“ something.html”。但我不知道如何。我正在使用method =“ POST”有什么方法可以将其重定向到其他页面,而不是收到404错误
使用try / except块,如果找不到对象,则可以重定向
try:
instance = register.get(pk=request.user.id)
except register.DoesNotExist:
return HttpResponseRedirect('url that renders something.html')
Run Code Online (Sandbox Code Playgroud)
仅供参考,Django get_object_or_404函数的定义如下所示
def get_object_or_404(klass, *args, **kwargs):
"""
Uses get() to return an object, or raises a Http404 exception if the object
does not exist.
klass may be a Model, Manager, or QuerySet object. All other passed
arguments and keyword arguments are used in the get() query.
Note: Like with get(), an MultipleObjectsReturned will be raised if more than one
object is found.
"""
queryset = _get_queryset(klass)
try:
return queryset.get(*args, **kwargs)
except queryset.model.DoesNotExist:
raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
Run Code Online (Sandbox Code Playgroud)
从文档开始,如果您在视图函数中的任何时候引发Http404,Django都会捕获它并返回应用程序的标准错误页面以及HTTP错误代码404。
如果要基于上下文变量呈现自定义404.html,请查看自定义错误视图
| 归档时间: |
|
| 查看次数: |
2375 次 |
| 最近记录: |