11

Tôi đang sử dụng django-allauth cho một trong các dự án của tôi. Tôi muốn thực hiện quá trình đăng nhập/đăng ký thông qua ajax. Tôi muốn có mẫu đăng ký tùy chỉnh. Tôi đã đi qua mẫu đăng ký và đăng ký của họ. Có vẻ như tôi có thể viết chế độ xem tùy chỉnh cho từng hành động và ánh xạ nó tới cấu hình url. Tôi không chắc chắn cách tốt nhất để làm điều này là gì.Thực hiện các yêu cầu/phản hồi Ajax với django-allauth

Cảm ơn bạn rất nhiều vì đã giúp đỡ hoặc tư vấn về vấn đề này.

Trả lời

9

Điều đó tùy thuộc vào ý nghĩa của ajax. Nếu bạn chỉ muốn có một hộp đăng nhập/đăng ký kiểu popup trên mỗi trang, thì bạn có thể chỉ cần thêm biểu mẫu vào mẫu cơ sở của bạn và hiển thị nó động bằng cách sử dụng Javascript trong hộp bật lên hoặc như vậy. Nếu bạn giữ url hành động biểu mẫu thành URL gốc allauth thì điều này sẽ cung cấp cho bạn cảm giác đăng nhập ajax. Bạn cũng có thể tinh chỉnh mọi thứ bằng cách sử dụng $.ajax hoặc $.post để đăng lên chế độ xem allauth gốc.

Điều gì đó giống như trên được thực hiện trên http://officecheese.com/ - đây là trang web dựa trên allauth, mặc dù tôi không liên kết với nó.

Nếu bằng ajax bạn có nghĩa là tất cả các chế độ xem có liên quan đến xác thực sẽ được hiển thị qua ajax, mà không gây ra tải lại tài liệu mới, thì tôi e rằng bạn có chút may mắn. Điều này đơn giản là có vấn đề đối với kịch bản nơi xác minh e-mail hoặc bắt tay OAuth bị bắt buộc, vì ở đây bạn thường điều hướng đến một URL mới từ hộp thư của bạn hoặc chuyển hướng đến Twitter, v.v.

+1

Xin chào @pennersr, tuyệt vời khi có câu trả lời của bạn. Tôi muốn thực hiện một hình thức trong dropdown mà là tương tự như những gì officecheese.com làm. nhưng nếu có lỗi, hãy nói "tên người dùng hoặc mật khẩu không hợp lệ" hoặc "Tên người dùng đã tồn tại". Tôi muốn nhận được lỗi này ngay trước khi thực sự điều hướng. Vì vậy, kế hoạch của tôi là gửi biểu mẫu thông qua '$ .post' và có phản hồi json để đăng nhập và đăng ký. Cảm ơn bạn rất nhiều vì đã giúp tôi trong việc này. – san

+1

Bạn có thể kiểm tra phản hồi đối với lệnh '$ .post/ajax' của bạn, trích xuất biểu mẫu html (chứa các lỗi xác thực) và thay thế biểu mẫu ban đầu của bạn. Một cái gì đó như: '$ (" ... oldForm ... ")). ReplaceWith ($ (ajaxresponse) .find (" form "))'. Phát hiện chuyển hướng URL thành công khi đăng nhập có thể trở nên hơi lộn xộn, bạn sẽ cần phải phát hiện ra rằng bạn kết thúc tại url chuyển hướng đăng nhập. Việc ghi đè các chế độ xem để trả về dữ liệu JSON có cấu trúc là rõ ràng hơn. Sau đó, một lần nữa, tại sao đi qua những rắc rối của cố gắng để ajaxify này - các trang web như Twitter không làm điều này hoặc. – pennersr

+0

@pennersr ngoài mã hóa cứng id vào các mẫu cơ sở hoặc sử dụng chế độ xem dựa trên lớp học, có cách nào để bao gồm biểu mẫu trong tất cả các chế độ xem dựa trên chức năng của tôi mà không phải thêm vào mỗi chế độ xem không? – wasabigeek

Các vấn đề liên quan