11

私のプロジェクトでdjango-allauthを使用しています。私はajax経由でlogin/signupプロセスを実装したいと思います。私はサインアップフォームをカスタマイズしたいと思います。私は彼らのsignupmixinとサインアップフォームを通過していた。私は各アクションのカスタムビューを作成し、それをURL設定にマップできるように思えます。私はこれを行うための最良の方法は何か分かりません。django-allauthでAjax要求/応答を実装する

ありがとうございました。ご協力いただきありがとうございます。

答えて

9

これは、ajaxの意味に少し依存します。すべてのページにポップアップスタイルのログイン/サインアップボックスが必要な場合は、フォームを基本テンプレートに追加し、JavaScriptをポップアップボックスなどで動的に表示するだけです。フォームアクションURLを元のallauth URLに保存すると、これはすでにajaxのサインインの感覚を与えます。 $.ajaxまたは$.postを使用して元のallauthの投稿に投稿することで、状況を調整することもできます。

http://officecheese.com/でこれが行われます。これはallauthベースのサイトですが、私はそのサイトに所属していません。

ajaxを使用すると、新しいドキュメントの再読み込みを行わずに、すべての認証関連のビューをajaxで表示する必要があるということを意味している場合は、少し運が悪いと思います。これは、通常、メールボックスからの新しいURLへのナビゲートやTwitterへのリダイレクトなど、電子メールの確認やOAuthハンドシェークを含むシナリオでは問題になります。

+1

こんにちは@pennersr、あなたの返事を持ってよろしいですか?私はofficecheese.comのやり方に似た、ドロップダウンのフォームを実装したいと思います。エラーがある場合は、「無効なユーザー名またはパスワード」または「ユーザー名が既に存在します」と言うことができます。実際にナビゲートする前にこのエラーを表示したいと思います。ですから、私の計画は '$。post 'を介してフォームを送信し、ログインとサインアップのためのjson応答を持っています。これで私を助けてくれてありがとう。 – san

+1

'$ .post/ajax'呼び出しに対する応答を検査し、html(検証エラーを含む)を抽出し、オリジナルのフォームを置き換えることができます。 '$(" ... oldForm ... "))。replaceWith($(ajaxresponse).find(" form "))'のようなものです。ログインの成功URLのリダイレクトを検出するのがちょっと面倒になるかもしれませんが、ログインのリダイレクトURLで終わることを検出する必要があります。しかし、構造化されたJSONデータを返すためのビューをオーバーライドすることはよりクリーンです。それから、もう一度、なぜこのようなことを実現しようとするのか、Twitterのようなサイトはこれをやっていない。 – pennersr

+0

@pennersr idを基本テンプレートにハードコードするか、クラスベースのビューを使用するのではなく、すべてのビューにすべての関数ベースのビューを追加する必要はありません。 – wasabigeek

関連する問題