如果在Django中使用formwizard,如何访问URL参数并使用它们?

2024-04-26 14:53:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是django1.4。我花了很长时间在google上搜索和查看django页面上的文档,https://docs.djangoproject.com/en/1.4/ref/contrib/formtools/form-wizard/等等。很少有人问过这个问题,也没有人回答过。你知道吗

我需要做的是:

使用来自网址.py(如下所示):

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

在视图.py(如下所示):

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

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

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

Tags: django文档pyhttpsformcomurldocs
2条回答

也解决了这个问题。窗体向导实例包含self.args自我.kwargs设置为argskwargs的,从URLconf传递给视图。你可以在django.views.generic文件.基地调度

在被困了几天之后,答案相当简单。如果您正在阅读本文,请确保首先使用基于类的泛型视图,否则这是另一个问题。你知道吗

您可以在以下链接中找到相关信息,不清楚这是如何分配额外上下文的(不是使用额外的上下文变量): https://docs.djangoproject.com/en/1.4/ref/contrib/formtools/form-wizard/#django.contrib.formtools.wizard.views.WizardView.get_context_data

为所有formwizard页面设置上下文变量的示例代码(与它们略有不同):

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)的子类中。在问题的上下文中视图.py文件。你知道吗

以其他方式做这件事的问题是self.args以及自我.kwargs在调度函数运行时设置。注意:您不能通过设置额外的上下文变量来设置上下文这就是我摔倒的地方。你知道吗

从freenode上的#django频道向nkryptic付费。如果你在回答这个问题后仍然被困在这里,这是一个非常好的去处。祝大家好运。你知道吗

相关问题 更多 >