# -*-coding:utf-8-*-
__author__ = "GILANG (pleasurelong@foxmail.com)"
"""
django 自定义用于view的装饰器
"""
from functools import wraps
def object_does_not_exist(func):
"""
不带参数的装饰器
"""
@wraps(func)
def returned_wrapper(request, *args, **kwargs):
try:
return func(request, *args, **kwargs)
except ObjectDoesNotExist:
raise Http404()
return returned_wrapper
@object_does_not_exist
def detail(request):
"""
用法
"""
pass
############################################################################
def object_does_not_exist(redirect=None):
"""
第一种写法:带参数的装饰器
"""
def decorator(func):
@wraps(func)
def returned_wrapper(request, *args, **kwargs):
try:
return func(request, *args, **kwargs)
python django 自定义 装饰器
最新推荐文章于 2024-05-15 12:07:46 发布
本文介绍了如何在Django中创建自定义装饰器,用于处理视图函数中的`ObjectDoesNotExist`异常。提供了两种带参数和不带参数的装饰器实现方式,旨在优雅地处理对象不存在时的404错误,可以将用户重定向到指定页面或返回Http404异常。
摘要由CSDN通过智能技术生成