0

私はDjango 1.4を使用しています。私はかなりの時間をグーグルで検索し、djangoページのドキュメントを見てきたhttps://docs.djangoproject.com/en/1.4/ref/contrib/formtools/form-wizard/など。質問をした人はほとんどいません。たまたま誰もそれに答えていません。

私がする必要があるのは:

urls.py の slug パラメータを使用します (次のように):

FORMS=[...]
url(r'^url/(?P<slug>[\w-]+)/form/$', WizardWizard.as_view(FORMS)),

views.py で (次のように):

class WizardWizard(SessionWizardView):
    template_name = "template.html"

    extra_context = Model.objects.filter(slug=slug) # HERE!

    def done(self, form_list, **kwargs):
        ...
4

2 に答える 2

1

この問題も解決しました。FormWizardインスタンスには、URLconfから表示するために渡されるargskwargsに設定されたself.argsself.kwargsが含まれています。あなたはdjango.views.generic.base.dispatchでそれを見ることができます

于 2013-02-08T08:38:58.667 に答える
1

何日も立ち往生した後、答えはかなり簡単です。これを読んでいる場合は、最初にクラス ベースのジェネリック ビューを使用していることを確認してください。そうしないと、別の問題になります。

次のリンクで関連情報を見つけることができます。追加のコンテキストを割り当てる方法が明確ではありません (extra_context 変数を使用しない): https://docs.djangoproject.com/en/1.4/ref/contrib/formtools/form -wizard/#django.contrib.formtools.wizard.views.WizardView.get_context_data

すべてのフォームウィザードページにコンテキスト変数を設定するサンプルコード(彼らのものとは少し異なります):

def get_context_data(self, form, **kwargs):
    context = super(PaperworkWizard, self).get_context_data(form=form, **kwargs)

    #this line makes camp available as a var in the template context.
    #it sets it to an OBJECT RETRIEVED USING THE SLUG FROM THE URL.
    context.update({'camp': Camp.objects.get(slug=self.kwargs.get("slug"))})
    return context

このコードは、作成した SessionWizardView (または CookieWizardView) のサブクラスに配置する必要があります。質問のコンテキストでは、views.py ファイルの WizardWizard クラス。

これを他の方法で行う場合の問題は、ディスパッチ関数の実行時に self.args と self.kwargs が設定されることです。注: extra_context 変数を設定してコンテキストを設定することはできません

freenode の #django チャンネルから nkryptic に感謝します。この回答の後も行き詰っている場合は、ここに向かうのに最適な場所です。皆様のご多幸をお祈り申し上げます。

于 2013-02-10T04:47:03.797 に答える