在 Django 的 SessionWizardView 中访问请求对象
accessing request object in a SessionWizardView in django
我正在使用 django 表单 SessionWizardView
来实现表单向导。 url配置如下;
url(r'^contact/(?P<pk>\d+)/$', views.ContactWizard.as_view([DummyForm, OtherForm]), name='contact'),
我的想法是传递一个主键,这样我就可以用一些初始数据填充表单。从另一个视图加载表单如下:
def populate_review_form(request):
pk = 2
return redirect('contact', pk=pk)
我在这里尝试将硬编码的主键传递给表单。
现在,我的表单实现很简单,我重写 get_form_initial
以生成表单的初始值,如下所示:
class ContactWizard(SessionWizardView):
def get_template_names(self):
return "test.html"
def get_form_initial(self, step):
pk = self.request.GET.get('pk')
# Just attempt to print the primary key
print pk, self.request.GET
return {}
def done(self, form_list, **kwargs):
return HttpResponseRedirect('index')
问题是这总是打印 None <QueryDict: {}>
。所以,基本上我的参数没有被传递,或者我无法访问正确的 request
对象。在 Django 中是否可以进行这种通信?
pk
存储在 self.kwargs
:
pk = self.kwargs['pk']
我正在使用 django 表单 SessionWizardView
来实现表单向导。 url配置如下;
url(r'^contact/(?P<pk>\d+)/$', views.ContactWizard.as_view([DummyForm, OtherForm]), name='contact'),
我的想法是传递一个主键,这样我就可以用一些初始数据填充表单。从另一个视图加载表单如下:
def populate_review_form(request):
pk = 2
return redirect('contact', pk=pk)
我在这里尝试将硬编码的主键传递给表单。
现在,我的表单实现很简单,我重写 get_form_initial
以生成表单的初始值,如下所示:
class ContactWizard(SessionWizardView):
def get_template_names(self):
return "test.html"
def get_form_initial(self, step):
pk = self.request.GET.get('pk')
# Just attempt to print the primary key
print pk, self.request.GET
return {}
def done(self, form_list, **kwargs):
return HttpResponseRedirect('index')
问题是这总是打印 None <QueryDict: {}>
。所以,基本上我的参数没有被传递,或者我无法访问正确的 request
对象。在 Django 中是否可以进行这种通信?
pk
存储在 self.kwargs
:
pk = self.kwargs['pk']