πŸ–₯ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„Π°Π±Ρ€ΠΈΠΊΠ° Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ²?



ΠžΡ‚Π²Π΅Ρ‚



Π­Ρ‚ΠΎ функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€. НапримСр, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π². Π›ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°, Π½ΠΎ ΠΏΡ€Π°Π² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠ»ΠΎΠ΄ΠΈΡ‚ΡŒ копипасту, напишСм Ρ„Π°Π±Ρ€ΠΈΠΊΡƒ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ².



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