Postępy projektowe #3

Postępy projektowe #3

Wraz z rozwojem aplikacji, możemy zechcieć ograniczyć dostęp do niej niezalogowanym użytkownikom. Żeby to zrobić, mamy kilka dróg. Najprostsza, to sprawdzenie w widoku czy użytkownik jest zalogowany:

def my_view(request):
if not request.user.is_authenticated:
return render(request, 'myapp/login_error.html')
# ...

W przykładzie powyżej, wyświetlamy stronę z informacją o błędzie logowania, jeśli użytkownik jest niezalogowany.

Dekorator login_required

Mając chociaż trochę doświadczenia z Django, możemy oczekiwać, że i w tym wypadku biblioteka podrzuci nam coś przydatnego. Tak jest i w tym wypadku. Możemy użyć dekoratora "login_required":

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
...

Jeśli użytkownik nie jest zalogowany, zostanie przekierowany na stronę logowania. Po zalogowaniu zostanie skierowany ponownie na stronę początkową. Jeśli jednak chcielibyśmy skierować go gdzieś indziej, to wystarczy użyć opcjonalnego parametru "redirect_field_name".

A co w sytuacji, gdy widoki importujemy z zewnętrznej biblioteki?

W takim wypadku możemy użyć wspomnianego wcześniej dekoratora, ale tym razem definicji naszych odnośników w pliku url.py:

urlpatterns = [
url(r'quiz', login_required(include(quiz_urls))),
...
]

0 Komentarze

Skomentuj


O mnie

justyna kubisztal

Cześć, jestem Justyna. Programistka Pythona z trzyletnim doświadczeniem w zawodzie i kilkuletnim doświadczeniem w IT. Mentor i współorganizatorka Django Girls Kraków, tłumaczka Coursery, pasjonatka języków obcych i zwolenniczka uczenia się przez całe życie.

Bądźmy w kontakcie

Ostatnie wpisy

Wspieram

Szkoła 3.0

Kategorie

Tags

Mapa strony

Sitemap