Formularze do obsługi użytkowników dzięki Django Registration

Budowanie zaawansowanych serwisów internetowych to tak naprawdę budowa zamku z klocków. W tym artykule nauczymy się właśnie posługiwać takimi klockami, a dokładniej poznamy moduł Django Registration, który umożliwia nam dodanie do strony internetowej formularzy umożliwiających rejestrację, logowanie oraz inne mechanizmy do obsługi kont użytkowników.

Fot: unsplash.com, CC0 License.

Wymagania

Django Registration do poprawnego działania wymaga Pythona w wersji wyższej niż 2.7.9 (dla Pythona 2.x) lub 3.4 (dla Pythona 3.x) oraz oczywiście Django przynajmniej 1.8.

Instalacja

Chcąc skorzystać z modułu Django Registration musimy najpierw go zainstalować. W tym celu przechodzimy więc do terminalu gdzie odnajdujemy katalog naszego projektu i wpisujemy poniższe polecenie:

Ustawienia i konfiguracja

Po pomyślenj instalacji przyszła pora na zmierzenie się z kofiguracją paczki. Otwieramy więc plik settings.py gdzie ustawiamy wartość parametru odpowiedzialną za liczbę dni jaką użytkownik będzie miał na aktywację swojego konta:

Oczywiście podobnie jak robiliśmy to przy okazji artykułu na temat social widgetów w Django, również i tutaj musimy w pliku settings.py dodać informacjie o nowo zainstalowanym module:

Kolenym krokiem będzie ustawienie odpowiedniego url’a, który będzie przekierowywał do skryptu odpowiedzialnego za obsługę kont użytkowników. Przechodzimy więc do pliku urls.py w katalogu naszego serwisu i do tablicy urlpatterns przypisujemy nowy element:

Przykładowy wygląd tablicy ze ścieżkami:

Wgranie szablonów

W dalszej kolejności pozostało nam wgranie odpowiednich szablonów do naszego projektu. Aby to zrobić musimy z portalu GitHub pobrać repopozytorum „django-registration-templates” (github.com/macdhuibh/django-registration-templates), możemy to zrobić na przykład poprzez przycisk „dowlnolad” znajdujący się w prawym górnym rogu strony lub za pomocą gita. Kiedy pliki znajdą się już na naszym komputerze, wystarczy tylko przenieść je do katalogu templates naszego serwisu (katalog ten znajduję się w katalogu projektu: nazwa_projektu/nazwa_serwisu/templates).

Uwaga, w katalogu templates mamy teraz następujące pliki: index.html oraz base.html. Ważne jest to, żeby zachować ich nazwy oraz nie modyfikować ich zawartości (no chyba, że chcemy wprowadzić modyfikacje w formularzach). Ważne jest również to aby ścieżka generująca widok strony głównej (plik urls.py w katalogu serwisu) ładowała plik index.html: r'^$', HomeView.as_view(), name='index'.

Formularze już prawie działają ale…

No właśnie, kiedy uruchomimy nasz serwis zobaczymy, że formularze już wyświetlają się na stronie i można je wypełnić, a nawet wysłać. Jednak jak się okazuje, po kliknięciu przykładowo, przycisku „register” znajdującego się w formularzu rejestracji użytkowników, otrzymujemy błąd:

OperationalError at /accounts/register/
no such table: auth_user

Aby go usunąć musimy zrobić migrację danych, wywołujemy więc z poziomu terminala poniżsżą komendę:

Teraz możemy ponownie spróbować wysłać formularz ale znowu trafiamy na pewien problem:

[Errno 61] Connection refused

Kiedy przescrolujemy nieco niżej odnajdziemy miejsce w którym jest błąd. Jak widać problem dotyczy mechanizmu wysyłającego emaile, pozostaje więc jeszcze raz wrócić do pliku konfiguracyjnego aby dokonać tam pewnych zmian.

Na początku pliku dodajemy informacje o imporcie mechanizmu obsługującego wysyłanie emaili w Django:

oraz na końcu podajemy wszystkie niezbędne informacje umożliwiające wysłanie emeila:

Gotowe, teraz jeżeli będziemy chcieli zarejestrować nowego użytkownika wszystko powinno zadziałać.

Podsumowanie

Jak widać dzięki modułowi Django Registration dostaliśmy „za darmo” cały mechanizm generujący formularze do obsługi kont użytkowników na naszej stronie internetowej. Więcej informacji na temat wykorzystania tego skryptu znajdziecie oczywiście w dokumentacji: django-registration.readthedocs.io.

Przeczytaj również

, , , , , , , ,

Dodaj komentarz

guest
13 komentarzy
Najstarsze
Najnowsze Najlepiej oceniane
Inline Feedbacks
View all comments
Mirek
Mirek
11 sierpnia 2020 21:49

Super! Dzięki za prosty i konkretny opis. Jeszcze nie testowałem, ale ostatnio jak chciałem pobrać jakieś repozytoria to miałem z tym problem. Możesz opisać dokładnie jak to zrobić?

Łukasz
11 sierpnia 2020 22:05
Reply to  Mirek

Co konkretnego masz na myśli z tymi repozytoriami?

Mirek
Mirek
11 sierpnia 2020 22:14
Reply to  Łukasz

Mam zerową wiedzę o Django, minimalną z Pythona i wybiórczą wiedzę informatyczną. Potrzebowałbym instrukcji krok po kroku jak zaimportować te repozytoria w PyCharm na Windows.

Łukasz
11 sierpnia 2020 22:27
Reply to  Mirek

Tak jak jest to opisane w artykule, przechodzisz do odpowiedniego katalogu (z Twoim projektem) instalujesz moduł, a potem w pliku settings.py, dodajesz informacje o nowym module i powinno działać ;-)

Mirek
Mirek
11 sierpnia 2020 22:43
Reply to  Łukasz

Teraz piszesz chyba o instalacji modułu Django, a ja pytam o repozytoria z GitHab.com

Łukasz
11 sierpnia 2020 22:46
Reply to  Mirek

Ok, nie zrozumieliśmy się. No to też jest proste, robisz clone i w pycharm file -> import (czy jakoś tak). O komendach gita pisałem na blogu…

Mirek
Mirek
11 sierpnia 2020 23:17
Reply to  Łukasz

Dobra, chyba mam. Jutro przetestuję.
git remote add origin http://github.com/

Mirek
Mirek
12 sierpnia 2020 16:20

‚git’ is not recognized as an internal or external command,
operable program or batch file.

Mirek
Mirek
12 sierpnia 2020 17:13

Nie wspomniałeś o tym w poradniku… :D Teraz działa ;) Dzięki

Mirek
Mirek
12 sierpnia 2020 19:20

Po zainstalowaniu django-registration do nowego projektu nie tworzy się settings.py i urls.py. Nie tworzą się też po pobraniu gita. O co tu tym razem chodzi?