Decorator در Python یک function است که یک function دیگر را به عنوان ورودی میگیرد و نسخهای جدید از آن را با قابلیتهای اضافه برمیگرداند، بدون اینکه کد اصلی تغییر کند. از decorator معمولاً برای کارهایی مثل logging، validation، caching و access control استفاده میشود.
defmy_decorator(func):
defwarpper():
print("-- start")
func()
print("-- finish")
returnwarpper@my_decoratordeftest():
print("this is a test")
test()Django تعداد زیادی decorator آماده دارد که کارهای رایج توسعه وب را ساده میکنند:
@login_required→ محدود کردن دسترسی یک view به کاربران لاگین کرده.@permission_required('app.permission')→ بررسی داشتن permission خاص برای کاربر.@csrf_exempt→ معاف کردن یک view از بررسی CSRF.@cache_page(timeout)→ cache کردن خروجی یک view برای مدت مشخص.
مثال:
fromdjango.contrib.auth.decoratorsimportlogin_required@login_requireddefdashboard(request):
returnHttpResponse("wellcode to dashboard")خلاصه: در Python، decorator روشی انعطافپذیر برای افزودن یا تغییر رفتار function و method است. در Django، از آن برای authentication، authorization، security و performance optimization استفاده میشود.