2011-02-09 18 views
4

私のプロジェクトの1つにdjango-registration(参照:https://bitbucket.org/ubernostrum/django-registration)を使用しています。ジャンゴ・登録のための標準的なセットアップはurls.pyファイルdjango登録表示のカスタマイズ

(r'^accounts/', include('registration.urls')) 

に以下のコードを追加してもregistrationというフォルダにテンプレートをカスタマイズすることです。

上記のコードは、登録、ログイン、およびパスワードの回復へのリンクを作成しています。しかし、私のプロジェクトでは、私は通常私のビューに追加するいくつかの他の機能があるので、ちょうどinclude('registration.urls')を追加すると、それらのdjango登録フォームを含むビューをカスタマイズする方法がないようです。

ビューでdjango-registrationが使用しているフォームを呼び出す方法はありますか?そのビューでいくつか追加することはできますか?

+0

もしあなたが登録フォームをカスタマイズしたいのであれば、あなたのアプリケーションのリポジトリからコードをコピーし、モジュール内で必要な変更を加えてください.......もしそれが最大でなかったらplzよりもマークは返信します。 – Prateek

+0

私はフォームをカスタマイズする必要はありません、私は作成したいビューにそれらを持って来る必要があります。たとえば、登録フォームを表示すると、特定のタイプのトラッキングを行うカスタム関数を(同じビューで)追加することもできます。 – avatar

答えて

6

登録フォームは、登録バックエンドによって提供されます。 をチェックしてください。

クラスを返すメソッドget_form_class(request)があります。新しいバックエンドを作成し、DefaultBackendから継承し、get_form_class()メソッドをオーバーライドするだけで新しいフォームクラスが返されます。

登録アプリケーションの基本的な動作を変更することを除いて、カスタムバックエンドを提供することで、ほとんど何でもできます。 Custmバックエンドを提供してもカットを作成しないようにビューを根本的にカスタマイズする必要がある場合は、authnまたはusers appを作成し、django登録のビットをインポートすると便利です。たとえば、registrationアプリのネームスペース内にデフォルトのモデルとマネージャーを残しておくことはできますが、カスタムバックエンドを新しいアプリで独自の内部構造に張り付けることができます。

+0

私があまりにも多くのことを求めていないなら、本当の例を挙げてください。私がどのように正確に私がそれをやろうとしているかを作成したいと思うビューのログインフォーム、またはログインフォームを持って来たいとしようか?私はフォーム自体をカスタマイズしたくありません。ちょうどその関数の周りにいくつかの関数を追加したいので、私のビューが呼び出されると関数が登録フォームまたは他の認証フォームと共に表示されます。ありがとうございました! – avatar

+3

もちろんできます。ここでは、登録バックエンドをクラスベースのビュー(もっと極端な例)にマージした要点(https://gist.github.com/819235)を削除しました。各登録プロセスの一般的なもののほとんどは、 'RegistrationProfile'マネージャーで定義されています。私はdjango-registrationで提供されているモデルとマネージャーを使用していますが、私自身の動作を提供しています。バックエンド用のAPIはかなり柔軟なので、シグナルをインターセプトし、クラスMyBackend(DefaultBackend)を提供することでほとんどのことを達成できますが、これは他に可能なことを示すためのものです。 –