2011-11-12 12 views
0

こんにちは、Stackoverflowの人、Django:引数を使ってviews.pyを呼び出す

私はUserenaパッケージをユーザー登録サイトに使用しています。パッケージは、views.py関数 "def profile_edit"(私が正しく理解していれば)の呼び出し中にテンプレートまたはフォームクラスを変更することを可能にします。

ビュー機能の完全なヘッダーは次のとおりです。

def profile_edit(request, username, edit_profile_form=EditUserProfileForm, 
      template_name='userena/profile_form.html', success_url=None, 
      extra_context=None): 

デモプロジェクトは、ステートメント

{% url userena_profile_edit user.username %} 

私は変更しようとurls.pyを通じてテンプレートのビュー関数を呼び出しますフォームパラメータは、たとえば

{% url userena_profile_edit user.username edit_profile_form=EditUserProfileForm %} 

となります。これはn

私もkwargs dictを指定しようとしましたが、どちらも機能しませんでした。

{% url userena_profile_edit user.username kwargs={'edit_profile_form':EditUserProfileForm} %} 

正しく機能を呼び出すにはどうすればよいですか。私はなぜ最後の声明がうまくいかないのか混乱しています。

ありがとうございました!

+0

あなたはurls.py' 'で該当する行がどのように見えるか、私たちが表示されるはずです。 – Lycha

+0

#のプロフィールを編集 URL(R '^(?P [\。\ W] +)/編集/ $'、 userena_views.profile_edit、 名= 'userena_profile_edit')、 – neurix

答えて

0

ユーザー名をkwargにするのはどうですか?

{% url userena_profile_edit username=user.username edit_profile_form=EditUserProfileForm %} 
2

あなたの混合argsとkwargsが原因です。 reverseコールでそれを行うことはできません。 user.usernameはkwargとしてそれを使用してみてください、引数である:

{% url userena_profile_edit username=user.username edit_profile_form=EditUserProfileForm %} 
+0

は、あなたの答えをありがとう! あなたが提案したように関数を呼び出そうとすると、エラーが発生します: レンダリング中にNoReverseMatchが発生しました: 'userena_profile_edit'を引数 '()'およびキーワード引数 '{' username ':u'Mark' 、 'edit_profile_form': ''} 'が見つかりません。多分私が使用しなければならない別の方法はありますか? – neurix

+0

あなたの質問を編集して、あなたの 'urls.py'も表示してください –

+0

' profile_edit'関数の 'EditUserProfile'がデフォルトとして既にあります。 '{%url userena_profile_edit user.username%}'を試してみましたか? –

関連する問題