2009-07-08 14 views
0

私はカスタムフォームウィザードを作って管理インターフェースに組み込みました。カスタムテンプレートをdjango管理インターフェースとセッションに組み込みます

基本的に私はchange_form.htmlを取り、管理インターフェースURLの下にそれを残しています

(r'^admin/compilation/evaluation/add/$', EvaluationWizard([EvaluationForm1, EvaluationForm2])), 

それは動作しますが、管理者「セッション」が保持されていません。私は管理インターフェースにログインせずにページにアクセスすることができ、ブレッドクラムのような管理変数は機能しません。

「管理インターフェースセッション」の下でどのように組み込むことができますか?あなたが許可されたユーザーのみがページにアクセスすることを確認する必要がある場合は

おかげで、 ジョン

答えて

1

は、あなたの要求ハンドラで管理者ユーザーをチェックする必要があります。これは、EvaluationWizardクラスの__call__メソッドになります。

基本的に、管理者が使用するロジックはhereです。

if not self.has_permission(request): 
    return self.login(request) 

を、あなたが必要なものは何でも同様のロジック、またはを使用します。AdminSiteクラスでこれを探してください。 __call__メソッドの上部に同様の声明が必要です。 has_permissionメソッドがAdminSiteの場合、そのまま使用できますが、具体的なニーズに合わせてloginメソッドを適用する必要があります。

+0

ありがとうございます。私はあなたの例をどのように使うべきか分かりませんし、パンくずリストのようなテンプレート変数がうまくいくのに役立つかどうかも分かりません。 FormWizardクラスで__call__メソッドを使用する具体的な例を教えてください。 FormWizardの__call__メソッドをオーバーライドするだけで、スーパークラスを返す以外は何もしないと、HttpResponseオブジェクトを保持していないというエラーが表示されます。 –

+0

あなたは本当にスーパークラスを返すのですか?または、スーパークラスが返すものを返しますか?誤解を避けるためにコードを投稿する必要があります。 –

+0

私はdef __call __(self、request、* args、** kwargs)をやっていることを意味します:super(EvaluationWizard、self).__ call __(request、* args、* kwargs) それはどうしたのでしょうか? –