Django by example Book

Building a Social Website with Django – Phần 4

Dịch từ: Django by example – Antonio Melé

CHANGE PASSWORD VIEWS

Chúng ta cũng cần cho phép người dùng thay đổi mật khẩu khi họ đăng nhập vào website. Chúng ta sẽ tích hợp views xác thực trong Django cho phép người dùng thay đổi password. Mở file urls.py của ứng dụng account và thêm vào URL pattern sau:

p4_1 (1)

View password_change sẽ xử lý form cho việc thay đổi password và password_change_done sẽ hiển thị message thành công sau khi người dùng thay đổi password của họ. Bây giờ là lúc tạo mỗi template cho mỗi view.

Thêm một file trong thư mục templates/registration/ của ứng dụng account và đặt tên password_change_form.html . Thêm vào đoạn code sau:

p4_1 (2)

Template này bao gồm form để thay đổi password. Bây giờ, tạo một file khác trong cùng thư mục và đặt tên password_change_done.html . Thêm vào đoạn code sau:

p4_1 (3)

Template naỳ chỉ chứa message hiển thị cho người dùng biết rằng họ đã thay đổi password thành công.

Mở http://127.0.0.1:8000/account/password-change/ trên trình duyệt của bạn. Nếu người dùng chưa đăng nhập, trình duyệt sẽ chuyển hướng họ đến trang log-in. Sau khi đã đăng nhập thành công , bạn sẽ nhìn thấy page thay đổi password như sau:

p4_1 (4)

Điền vào form password hiện tại và nhập vào password mới, click Change button . Bạn sẽ nhìn thấy page sau:

p4_1 (5)

Log-out và log-in trở lại với password vừa thay đổi để xác nhận mọi thứ làm việc đúng như mong đợi.

RESET PASSWORD VIEWS

Thêm URL pattern sau cho việc phục hồi password trong file urls.py của ứng dụng account.

p4_1 (6)

Tạo một file mới trong thư mục templates/registration/ của ứng dụng account và đặt tên password_reset_form.html . Thêm vào đoạn code sau:

p4_1 (7)

Bây giờ hãy tạo một file khác trong cùng thư mục và đặt tên là password_reset_email.html . Thêm vào đoạn code sau:

p4_1 (8)

Template này sẽ sử dụng để render e-mail gửi cho user để reset password.

Tạo một file mới trong cùng thư mục và đặt tên là password_reset_done.html. Thêm vào đoạn code sau:

p4_1 (9)

Tạo một template mới và đặt tên password_reset_confirm.html. Thêm vào đoạn code sau:

p4_1 (10)

Chúng ta kiểm tra nếu link cung cấp là hợp lệ. View reset password trong Django thiết lập biến này và đặt nó trong context của template. Nếu link hợp lệ, chúng ta sẽ show form reset password cho người dùng.

Tạo một template khác và đặt tên là password_reset_complete.html. Thêm vào đoạn code sau:

p4_1 (11)

Cuối cùng , edit template registration/login.html của ứng dụng account và thêm vào đoạn code sau phần tử <form>:

p4_1 (12)

Bây giờ, mở http://127.0.0.1:8000/account/login/ trên trình duyệt và click link Forgotten your password?. Bạn sẽ thấy page hiển thị như sau:

p4_1 (13)

Đến bước này, bạn cần thêm vào cấu hình SMTP trong file setting.py của project để Django có thể gửi email. Chúng ta đã biết làm thế nào để configure SMTP trong Chapter 2, Enhancing Your Blog with Advanced Features. Tuy nhiên, trong giai đoạn phát triển, bạn có thể configure Django viết email đến chuẩn output thay vì gửi chúng thông qua server SMTP. Django cung cấp một email backend để viết email đến console. Thay đổi file setting.py của project và thêm vào đoạn code sau:

p4_1 (14)

Cài đặt EMAIL_BACKEND thể hiện class được sử dụng để gửi email.

Trở lại trình duyệt của bạn, điền địa chỉ email của người dùng trong hệ thống, và click button Send e-mail. Bạn sẽ thấy page hiển thị như sau:

p4_1 (15)

p4_1 (16)

Nhìn vào output tại console nơi bạn đang chạy server phát triển, bạn sẽ nhìn thấy một

e-mail như sau:

p4_1 (17)

Email được render đang sử dụng template password_reset_email.html  mà chúng ta đã tạo trước đó. URL để reset password bao gồm token được sinh tự động bởi Django. Mở link này trên trình duyệt, bạn sẽ nhìn thấy page như sau:

p4_1 (18)

Page để set password mới là template password_reset_confirm.html mà chúng ta đã tạo. Điền password mới và click Change My Password . Django sẽ tạo một password mới được mã hóa và lưu nó trong database. Bạn sẽ nhìn thấy page reset password thành công giống như sau:

p4_1 (19)

Bây giờ, bạn có thể login trở lại tài khoản của bạn bằng cách sử dụng password vừa đổi. Mỗi token để set một password mới chỉ được sử dụng một lần. Nếu bạn mở link bạn vừa nhận trở lại, bạn sẽ nhận được thông báo lỗi nói rằng token không hợp lệ.

p4_1 (20)

Như vậy, bạn đã tích hợp views authentication framework của Django trong dự án của bạn. Các Views này thông thường thích hợp trong hầu hết các trường hợp. Tuy nhiên, bạn có thể tạo ra các views riêng cho mình tùy vào nhu cầu sử dụng.

Đọc tiếp:

5 thoughts on “Building a Social Website with Django – Phần 4

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s