1 of 13

Aplicații web în Python

2020

Curs introductiv de web development folosind Python și Django

2 of 13

Despre ce discutăm azi

Django authentication

  • django.contrib.auth
  • User
  • register
  • login
  • logout
  • @login_required

3 of 13

Django.contrib.auth

  • suportul de autentificare al framework-ului Django
  • preinstalat în settings.py

Modelul User

4 of 13

Superuser si staff

  • is_superuser

Marchează un utilizator care are toate drepturile în aplicație fără să fie nevoie de o declarare explicită a acestora.

  • is_staff

Marchează un utilizator care are acces meniul de administrator.

  • is_active

Dacă is_active este False, atunci utilizatorul respectiv nu se poate autentifica.

5 of 13

AnonymousUser

- este o clasă ce implementează interfața User, cu diferențele:

  • id-ul este None
  • username-ul este gol
  • is_anonymous este True
  • is_authenticated este False

Interacționăm cu această clasă în momentul în care avem un utilizator neautentificat.

6 of 13

Register

- crearea unui nou utilizator

- este folosită metoda create_user a user-ului

- utilizăm UserCreationForm

user = User.objects.create_user(username='user1',

password='user1password')

7 of 13

Login

Login

  • este salvat ID-ul utilizatorului în cadrul sesiunii
  • utilizăm AuthenticationForm

from django.contrib.auth import authenticate, login

user = authenticate(username=username, password=password)� if user is not None:� login(request, user)

8 of 13

Log out

Log out

  • la apelarea funcției logout, datele din sesiune pentru cererea curentă sunt șterse

from django.contrib.auth import logout

logout(request)

9 of 13

Decoratori și Mixins

Decoratori

  • adaugă funcționalitate suplimentară codului existent deja

Format: @nume_decorator

Mixin

  • este o metodă specială de moștenire în Python prin care clasele pot să împartă metode comune moștenind dintr-o clasă Mixin

10 of 13

Exemplu Mixin

from django.http import JsonResponse

class JSONResponseMixin:

def render_to_json_response(self, context, **response_kwargs):

return JsonResponse(self.get_data(context), **response_kwargs)

class JSONView(JSONResponseMixin, TemplateView):

def render_to_response(self, context, **response_kwargs):

return self.render_to_json_response(context, **response_kwargs)

11 of 13

Login Required

Login Required

Function based view:

from django.contrib.auth.decorators import login_required

@login_required

def function_based_view(request):

pass

Class based view:

from django.contrib.auth.mixins import LoginRequiredMixin

class ClassBasedView(LoginRequiredMixin, View):

pass

12 of 13

În template

{% if user.is_authenticated %}

Show something

{% else %}

Show something else

{% endif %}

  • utilizăm is_authenticated pentru a verifica dacă avem un utilizator autentificat sau nu.

13 of 13

Ce a apărut nou în aplicație

  • Editarea profilului unui utilizator

  • Afisare status relatii utilizator pe pagina de profil

  • Login si Register

  • Accept Friend Request, Cancel Friend Request, Reject friend request