Django by example Book

Building a Social Website with Django – Phần 2

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

TẠO MỘT VIEW LOG-IN

Chúng ta sẽ bắt đầu bằng cách sử dụng Django authentication framework  cho phép user log-in đến website của chúng ta. View của chúng ta nên thực hiện các hành động theo sau:

  1. Nhận thông tin username và password từ user.
  2. Kiểm tra thông tin user với data trong database.
  3. Kiểm tra nếu người dùng active.
  4. Cho phép người dùng đăng nhập đến website và bắt đầu xác thực phiên làm việc.

Trước tiên, chúng ta tạo một form log-in cho phép người dùng đăng nhập. Tạo file mới tên form.py trong thư mục ứng dụng account và thêm đoạn mã sau:

1

Form này sẽ xác thực user với data trong database. Chú ý rằng chúng ta sử dụng widget PasswordInput để render phần tử input trong HTML bao gồm thuộc tính type=”password”.  Edit file views.py của ứng dụng account và thêm đoạn mã sau:

2
Đây là những gì một view log-in cơ bản thực hiện: khi view user_login được gọi với một request GET, chúng ta tạo thể hiện một form login mới với form = LoginForm() để hiển thị nó trong template. Khi user submit form với phương thức POST, chúng ta sẽ thực hiện các hành động sau:

  1. Khởi tạo thể hiện form submit data với form = LoginForm(request.POST)
  2. Kiểm tra nếu form hợp lệ. Nếu data không hợp lệ chúng ta sẽ hiển thị lỗi form trong template (ví dụ lỗi nếu người dùng không điền một trong các field).
  3. Nếu submit data hợp lệ, chúng ta sẽ xác thực user với data trong database bằng cách sử dụng phương thức authenticate(). Phương thức này nhận usernamepassword và trả về một đối tượng User nếu user xác thực thành công, ngược lại trả về None. Nếu user không xác thực, chúng ta sẽ trả về HttpResponse hiển thị một message.
  4. Nếu user xác thực thành công , chúng ta sẽ kiểm tra nếu user là active với thuộc tính is_active . Đây là một thuộc tính của model User trong Django. Nếu user không active, chúng ta sẽ trả về HttpResponse hiển thị thông tin.
  5. Nếu user active, chúng ta sẽ cho phép user đăng nhập đến website. Chúng ta sẽ thiết lập user trong session bằng cách gọi phương thức login() và trả về message đăng nhập thành công.

Chú ý:  Lưu ý sự khác nhau giữa authentication và login: authentication() kiểm tra thông tin user và trả về một đối tượng nếu chúng hợp lệ; login() thiết lập user trong session hiện tại.

Bây giờ, bạn cần tạo một pattern URL trong view này. Tạo một file urls.py trong ứng dụng account và thêm đoạn mã sau:

3

Edit file urls.py chính nằm trong thưc mục project bookmarks và thêm vào pattern URL của ứng dụng account với đoạn mã sau:

4

View login bây giờ có thể được truy cập trên URL. Đây là lúc cần tạo một template cho view này. Bởi vì bạn không có bất kỳ template nào trong project này, bạn có thể bắt đầu bằng cách tạo một template để có thể mở rộng bởi template login. Tạo một file và thư mục theo sau trong ứng dụng account.

5

Edit file base.html và thêm vào code như trên.

Đây sẽ là template chính cho website. Như chúng ta đã làm trong project trước, chúng ta sẽ bao gồm style CSS trong template chính. Tạo thực mục static trong ứng dụng account , thêm vào file css và bạn có thể sử dụng file static.

6

Template base định nghĩa block title và một content có thể bao gồm nội dung bởi các template mở rộng từ nó.

Để tạo template cho form log-in. Mở template account/login.html và thêm vào đoạn code sau:

7

Template này bao gồm form được tạo trong view. Bởi vì form của chúng ta sẽ được submit trên POST, chúng ta cần include tag template {% csrf_token %} để bảo vệ CSRF (Cross-Site Request Forgery) cho form.

Ở đây chưa có bất kỳ user nào trong database. Bạn sẽ cần tạo một superuser trước tiên để truy cập vào site administration cho việc quản lý các user khác. Mở command line và execute python manage.py createsuperuser. Điền thông tin trong username, emailpassword.

8

Sau đó khởi động server bằng cách gõ lệnh python manage.py runserver và mở url http://127.0.0.1:8080/admin trên trình duyệt.

9

Đăng nhập site admin bằng cách sử dụng usernamepassword  mà user vừa tạo ở trên. Bạn sẽ nhìn thấy site admin bao gồm model User và Group của authentication framework trên Django. Nó sẽ giống như hình sau:

10

Tạo một user mới sử dụng site admin và mở http://127.0.0.1:8000/account/login trên trình duyệt. Bạn sẽ thấy template được render, bao gồm form log-in:

11

Bây giờ, thử submit form mà để trống 1 trong 2 field. Trong trường hợp này, bạn sẽ nhìn thấy form không hợp lệ và hiển thị lỗi theo sau:

12

Nếu bạn điền username hoặc password sai, bạn sẽ nhận được message lỗi hiển thị như sau:

13

Nếu bạn điền username và password hợp lệ, bạn sẽ nhận được message hiển thị như sau:

14

Đọc tiếp:

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

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