Django đi kèm với các tính năng cần thiết để thiết lập một hệ thống xác thực người dùng hoàn chỉnh. Trong hướng dẫn này, chúng tôi sẽ đề cập đến các thành phần quan trọng nhất của hệ thống xác thực người dùng ở Django, cụ thể là
- Đăng ký
- Đăng nhập
- Đăng xuất
Đến cuối hướng dẫn này, bạn sẽ có thể
- Tạo dự án Django nơi người dùng có thể đăng ký, đăng nhập và đăng xuất
- Tạo biểu mẫu trong Django
- Chuyển hướng người dùng sau khi đăng nhập hoặc đăng xuất thành công
Hướng dẫn này giả định rằng bạn có kiến thức tốt về Django và bạn đã cài đặt Python3 trong hệ điều hành của mình
Tạo một dự án DjangoBạn nên thiết lập một môi trường ảo để đảm bảo rằng các phần phụ thuộc của dự án được tách biệt khỏi các gói hệ thống. Môi trường ảo cũng giúp cài đặt đúng phiên bản mô-đun dễ dàng hơn
Bắt đầu bằng cách tạo một thư mục để chứa các tệp dự án của bạn
mkdir Django_Login
cd vào thư mục bạn đã tạo ở trên bắt đầu bằng cách tạo một môi trường ảo với mô-đun venv python
cd Django_Login
python -m venv my_env
Mô-đun
cd Django_Login
1 cung cấp hỗ trợ để tạo “môi trường ảo” nhẹ với các thư mục trang web của riêng chúng, tùy chọn tách biệt khỏi các thư mục trang web hệ thống. Mỗi môi trường ảo có tệp nhị phân Python riêng [khớp với phiên bản của tệp nhị phân được sử dụng để tạo môi trường này] và có thể có bộ gói Python đã cài đặt độc lập riêng trong thư mục trang của nó
python -m venv my_env
Giải thích về môi trường ảo Python
Cách sử dụng Venv và Anaconda trong các dự án Khoa học dữ liệu và Python của bạn
con trăn. tiếng Anh đơn giản. io
Kích hoạt môi trường ảo và cài đặt Django
source my_env/bin/activatepip install django
Tạo một dự án Django có tên là django_auth
django-admin startproject django_auth
Thư mục dự án của bạn bây giờ trông như thế này
Xác thực người dùng trong Django
Django hoàn chỉnh với hệ thống xác thực, do đó bạn không phải tạo hệ thống xác thực từ đầu
Hệ thống xác thực Django được cung cấp bởi
cd Django_Login
python -m venv my_env
2 và bao gồm những điều sau đâyngười dùng
Quyền. Cờ nhị phân [có/không] chỉ định liệu người dùng có thể thực hiện một tác vụ nhất định hay không
Các nhóm. Một cách chung để áp dụng nhãn và quyền cho nhiều người dùng
Một hệ thống băm mật khẩu có thể định cấu hình
Biểu mẫu và công cụ xem để đăng nhập người dùng hoặc hạn chế nội dung
Một hệ thống phụ trợ có thể cắm
cd Django_Login
python -m venv my_env
2 cung cấp tất cả logic cần thiết để người dùng đăng ký, đăng nhập và đăng xuất thành công và hạn chế nội dung đối với người dùng trái phépcd Django_Login
python -m venv my_env
2is đã có mặt trong dự án Django của bạn. Nếu bạn mở tệp cd Django_Login
python -m venv my_env
5, bạn sẽ tìm thấy các cấu hình cụ thể là django. đóng góp. xác thực và django. đóng góp. contenttypes trong danh sách của cd Django_Login
python -m venv my_env
6, như hình bên dướiBạn cũng có thể tìm cấu hình phần mềm trung gian xác thực và phiên trong phần cài đặt. tập tin py
Bảng cơ sở dữ liệu xác thực
Chạy lệnh di chuyển sẽ tạo các bảng cần thiết cho hệ thống xác thực người dùng. Hãy chạy lệnh
cd Django_Login
python -m venv my_env
0Lệnh sẽ tạo các bảng thực tế trong cơ sở dữ liệu của chúng tôi và bạn sẽ thấy một cái gì đó như thế này
Bạn cũng có thể xem các bảng và xác nhận rằng chúng đã được tạo
Như bạn có thể thấy ở trên, chúng tôi có các bảng sau
- auth_group -
- auth_group_permissions
- auth_user
- auth_user_groups-
Tạo siêu người dùng
Hãy tạo một siêu người dùng để chúng ta có thể truy cập vào trang quản trị Django
cd Django_Login
python -m venv my_env
1Chạy máy chủ phát triển
cd Django_Login
python -m venv my_env
2Bạn sẽ thấy một cái gì đó như thế này
cd Django_Login
python -m venv my_env
3Ứng dụng sẽ bắt đầu tại http. //127. 0. 0. 1. 8000/. Nếu bạn điều hướng đến http. //127. 0. 0. 1. 8000/admin, bạn có thể đăng nhập bằng thông tin siêu người dùng mà bạn đã tạo ở trên
Khi bạn đăng nhập, trang quản trị trông như thế này
Như bạn có thể thấy ở trên, bạn có thể tạo người dùng từ trang quản trị, nhưng đó không phải là điều chúng tôi muốn. Chúng tôi muốn cung cấp một giao diện nơi người dùng có thể đăng ký, đăng nhập và đăng xuất một cách độc lập
Lượt xem xác thực
Vì Django đã cung cấp tất cả thông tin đăng nhập cần thiết để đăng ký, đăng nhập và đăng xuất, chúng tôi cần tạo các trang nơi người dùng có thể thực hiện xác thực của riêng họ
Để làm điều đó, Django cung cấp
cd Django_Login
python -m venv my_env
7, đưa chúng vào tệp gốc cd Django_Login
python -m venv my_env
8 như hình bên dướiCác URL được cung cấp bởi Django auth là
Tạo ứng dụng người dùngtài khoản/đăng nhập/ [tên=’đăng nhập’]
tài khoản/đăng xuất/ [tên=’đăng xuất’]
tài khoản/password_change/ [name=’password_change’]
tài khoản/password_change/done/ [name=’password_change_done’]
tài khoản/password_reset/ [name=’password_reset’]
tài khoản/password_reset/done/ [name=’password_reset_done’]
accounts/reset/
accounts/reset/done/ [name=’password_reset_complete’]
Hãy tạo một ứng dụng người dùng sẽ xử lý tất cả những thứ liên quan đến xác thực. Tạo một ứng dụng Django được gọi là người dùng bằng lệnh
cd Django_Login
python -m venv my_env
9cd Django_Login
python -m venv my_env
7Lệnh trên sẽ tạo một thư mục có tên là
source my_env/bin/activatepip install django0 trong dự án
source my_env/bin/activatepip install django1. Các tập tin của bạn bây giờ sẽ trông như thế này
Vì Django đã đi kèm với mô hình Người dùng nên chúng tôi sẽ không tạo mô hình cho ứng dụng này
Mở
cd Django_Login
python -m venv my_env
5 và thêm ứng dụng người dùng vào cd Django_Login
python -m venv my_env
6Tạo Trang chủ
Trang chủ sẽ là trang đầu tiên người dùng nhìn thấy khi họ mở ứng dụng của chúng tôi
Bất cứ khi nào Django muốn hiển thị một trang, nó sẽ tự động tìm trang đó trong thư mục mẫu của ứng dụng. Cách tốt nhất là đặt trang HTML bên trong một thư mục có cùng tên với ứng dụng
Tạo thư mục mẫu trong ứng dụng người dùng. Bên trong các mẫu bạn vừa tạo, tạo một thư mục khác
source my_env/bin/activatepip install django0. Tiếp theo, tạo một tệp
source my_env/bin/activatepip install django5 trong thư mục
source my_env/bin/activatepip install django0 bên trong nhất. Cấu trúc của ứng dụng người dùng của bạn bây giờ sẽ trông như thế này
Thêm đoạn mã sau vào
source my_env/bin/activatepip install django5
Đừng lo lắng về url, hiện tại chúng không hoạt động
Bây giờ hãy kết xuất trang chủ. Django cung cấp hàm
source my_env/bin/activatepip install django8, tải mẫu và cung cấp ngữ cảnh khi chúng được truyền dưới dạng đối số. Mở
source my_env/bin/activatepip install django9 và viết chế độ xem sau, hiển thị trang chủ
Ánh xạ Chế độ xem tới một URL
Tạo một tệp có tên
cd Django_Login
python -m venv my_env
8 trong thư mục ứng dụng source my_env/bin/activatepip install django0 và thêm URL cho trang chủ. Ở đầu tệp
cd Django_Login
python -m venv my_env
8, nhập đối tượng django-admin startproject django_auth
3 từ django-admin startproject django_auth
4 và chức năng xem trang chủ từ django-admin startproject django_auth
5Đừng quên thêm URL ứng dụng của người dùng vào URL của dự án. Tệp
django-admin startproject django_auth
6 bây giờ trông như thế nàyBây giờ khi bạn chạy máy chủ và điều hướng đến 127. 0. 0. 1. 8000/home/, bạn sẽ thấy trang sau
trang chủ
Lượt xem xác thực
Django cung cấp danh sách các lớp xem xác thực bao gồm tất cả logic để thực hiện các mục đích duy nhất của chúng. Những quan điểm này là
- Lớp Đăng nhậpXem
- lớp Đăng xuấtXem
- lớp
django-admin startproject django_auth
7 - lớp PasswordChangeDoneView
- lớp PasswordResetView
Vì các chế độ xem này đã được triển khai, chúng tôi không cần phải viết logic từ đầu, thay vào đó chúng tôi cần cung cấp mẫu cho mỗi chế độ xem
Tạo trang đăng nhập
Theo mặc định, http. //127. 0. 0. 1. 8000/accounts/login/ url sẽ cố hiển thị mẫu đăng nhập. Theo mặc định, tên của mẫu dành cho người dùng đăng nhập phải là
django-admin startproject django_auth
8Django sẽ tìm mẫu đăng nhập trong thư mục đăng ký trong thư mục mẫu. Hãy tạo một thư mục trong thư mục mẫu của ứng dụng người dùng có tên là
django-admin startproject django_auth
9 và thêm tệp cd Django_Login
python -m venv my_env
00Thêm đoạn mã sau vào tệp
cd Django_Login
python -m venv my_env
00Ở đây chúng tôi thêm một
cd Django_Login
python -m venv my_env
02 vào biểu mẫu của chúng tôi. Django sử dụng mã thông báo CSRF để bảo vệ biểu mẫu khỏi người dùng độc hại. Nó thực hiện điều này bằng cách thêm một mã thông báo bí mật bên trong phương thức POST khi biểu mẫu được hiển thị. cd Django_Login
python -m venv my_env
03 hiển thị biểu mẫu dưới dạng một loạt các thẻ cd Django_Login
python -m venv my_env
04, với mỗi thẻ cd Django_Login
python -m venv my_env
04 chứa một trườngBây giờ, bây giờ bạn có thể đăng nhập. Nếu bạn điều hướng đến http. //127. 0. 0. 1. 8000/accounts/login/, bạn sẽ thấy trang sau
Trang đăng nhập
Form đăng nhập gồm 2 trường username và password. Khi người dùng gửi biểu mẫu đăng nhập với thông tin xác thực phù hợp, người dùng sẽ được chuyển hướng đến URL được chỉ định trong phần tiếp theo. Nếu người dùng đăng nhập không thành công, biểu mẫu đăng nhập sẽ được hiển thị lại
Hãy thử và đăng nhập bằng thông tin xác thực sai, bạn sẽ thấy các lỗi bên dưới
Để cung cấp trải nghiệm người dùng liền mạch, chúng tôi cần chuyển hướng người dùng đến trang chủ sau khi đăng nhập thành công. Để làm điều đó, hãy thêm phần sau vào
cd Django_Login
python -m venv my_env
5django-admin startproject django_auth
5Sau khi đăng nhập thành công. , bạn sẽ thấy trang chào mừng sau đây
Trang chủ
Tạo một trang đăng xuất
Để đăng xuất người dùng, chúng tôi sẽ thêm một liên kết sẽ đăng xuất người dùng nếu họ nhấp vào liên kết đó. Chúng tôi cũng sẽ thêm một URL chuyển hướng vào
cd Django_Login
python -m venv my_env
5, URL này sẽ chuyển hướng người dùng trở lại trang chủ sau khi họ đăng xuất. Mở tệp cd Django_Login
python -m venv my_env
5 và thêm dòng mã saucd Django_Login
python -m venv my_env
0Mở
source my_env/bin/activatepip install django5 và cập nhật nó như hình bên dưới
Ở đây chúng tôi kiểm tra xem người dùng có được xác thực hay không và hiển thị liên kết đăng xuất nếu Đúng và nếu Sai, chúng tôi sẽ hiển thị liên kết đăng nhập
Tạo một trang đăng ký người dùng
Cho đến nay, chúng tôi đã dựa vào siêu người dùng để thực hiện các chức năng đăng nhập và đăng xuất. Bây giờ chúng tôi có thể đăng nhập và đăng xuất thành công. Hãy xem cách người dùng có thể tự đăng ký mà không cần phải sử dụng quản trị viên Django
Cách dễ nhất để thực hiện việc này là sử dụng chế độ xem dựa trên lớp
cd Django_Login
python -m venv my_env
10 và cd Django_Login
python -m venv my_env
11 mà Django cung cấp. cd Django_Login
python -m venv my_env
10 là một ModelForm để tạo người dùng mới và nó tạo ra các trường cần thiết tôi. e. , cd Django_Login
python -m venv my_env
13 và cd Django_Login
python -m venv my_env
14Mở
cd Django_Login
python -m venv my_env
15 và thêm lớp xem cd Django_Login
python -m venv my_env
16Tiếp theo, tạo trang
cd Django_Login
python -m venv my_env
17 và thêm vào như sauCuối cùng, thêm chế độ xem vào
cd Django_Login
python -m venv my_env
8. Hãy nhớ gọi cd Django_Login
python -m venv my_env
19 vì đây là chế độ xem dựa trên lớpTrang đăng ký bây giờ trông như thế này
Trang đăng ký
Sau khi đăng ký thành công, người dùng mới sẽ được chuyển hướng đến trang đăng nhập
Dọn dẹp
Bây giờ, hãy dọn dẹp để đảm bảo rằng nếu người dùng đã đăng nhập, họ sẽ thấy nút đăng xuất và liên kết Trang chủ. Mở
source my_env/bin/activatepip install django5 và thêm logic sau
Phần kết luận
Django cung cấp một cách tích hợp và dễ dàng hơn để đăng nhập và xác thực người dùng. Bạn cũng có thể sử dụng
cd Django_Login
python -m venv my_env
10 do Django cung cấp để tạo người dùng mới. Tôi hy vọng hướng dẫn này sẽ giúp bạn bắt đầu thiết kế hệ thống đăng nhập và đăng ký của riêng mình trong Django. Mã nguồn đầy đủ có thể được tìm thấy ở đâyThêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter, LinkedIn, YouTube và Discord