Asked Aug 31st, 2018 6:11 PM 87 0 1
  • 87 0 1
-1

Tạo nút đăng ký cho 1 Website

Share
  • 87 0 1

Em đang theo học về Python 3 và đang làm dự án cuối khóa. Hiện bài tập của e đang làm có vấn đề cần giải quyết:

1: Em đã tạo được 1 nút "đăng ký". Và em đang muốn báo cho người dùng biết username của họ đang trùng với 1 username khác thì sẽ báo cho họ biết để họ tạo username khác! Đây là đoạn code sign_up cho người dùng ạ! Em mong các cao nhân chỉ giáo ạ! Em cảm ơn

1 ANSWERS


Answered Sep 1st, 2018 4:03 AM
Accepted
+3

Đoạn code sign up của em đang gặp một vấn đề là nó đang không validate giữ liệu mà user truyền lên. 😄

Nhìn chung em nên có một tư tưởng là hầu hết các dữ liệu users gửi lên đều cần phải validate trước khi lưu vào trong database, và như thắc mắc của em, validate việc email hay username có bị trùng hay không là một trong những việc cần thiết. (Ngoài ra em cũng nên validate xem email có đúng format hay không, password có đủ dài, đủ mạnh hay không, và nên có một trường là password_confirmation và so sánh với password xem có trùng hay không để kiểm tra chắc chắn rằng người dùng nhập đúng password theo ý họ ...)

Về việc validate username hay email thì sau bước lấy dữ liệu từ form, em hãy truy vấn trong bảng User xem có record nào có username hay email như vậy hay không. Nếu có trả ra kết quả (tức là đã bị trùng) thì em không được phép lưu lại vào trong database nữa, thay vào đó em đưa người dùng trở lại trang sign up bằng return redirect(url_for("customer_sign_up")). Thế nên đoạn xử lý này thì cần được viết vào khoảng dòng 165 theo như trên hình của em.

Còn việc làm thế nào để trang sign up hiển thị được ra lỗi thì em cần có thêm một biến là errors để lưu nội dung lỗi, chẳng hạn ở đây thì:

errors = [
    "email" => "This email has been used",
];

Sau đó em lưu biến errors này vào trong session, ở trang sign up thì em check xem trong session có data về errors hay không, nếu có tức là đang có lỗi, và em hiện ra thông báo lỗi ở trong đó 😄

P/S: Ngoài ra có vẻ như em còn đang gặp một vấn đề là em lưu nguyên password của người dùng vào trong database mà không qua mã hoá, không biết có phải không nhỉ 😂

Share