
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