ΠΡΠ²Π΅Ρ
ΠΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ°Π². ΠΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°, Π½ΠΎ ΠΏΡΠ°Π² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ. Π§ΡΠΎΠ±Ρ Π½Π΅ ΠΏΠ»ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΠΏΠΈΠΏΠ°ΡΡΡ, Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ°Π±ΡΠΈΠΊΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ².
from functools import wraps
def has_perm(perm):
def decorator(view):
@wraps(view)
def wrapper(request):
if perm in request.user.permissions:
return view(request)
else:
return HTTPRedirect('/login')
return wrapper
return decorator
@has_perm('view_user')
def users(request):
...
@python_job_interview