【发布时间】:2014-10-03 15:31:20
【问题描述】:
我正在尝试创建一个使用基于类的视图的 django 网页。该网页需具备以下功能:
- 网页必须通过 HTTP GET 从 URL 获取参数,并使用这些参数向用户显示一些信息
- 网页必须基于表单从用户那里收集一些信息
- 网页必须验证用户提交给表单的信息。如果任何表单数据无效,则必须在表单上向用户显示错误,以便她更正并重新提交。
我知道如何通过创建一个继承自 django.views.generic.TemplateView 的类来创建一个编号为 1 的网页。我知道如何通过创建一个继承自 django.views.generic.editFormView 的类来创建一个执行编号 2 和 3 的网页。但我不知道如何制作一个同时完成这三个方面的网页。我尝试创建一个继承自 TemplateView 和 FormView 的类,但发现我仍然无法获取 HTTP GET 数据。请告知我如何才能完成这项工作。
这是我的相关@987654325@ 条目:
url(
r'^myPage/(?P<myArg1>\d+)-(?P<myArg2>\d+)/?$',
myView.as_view(),
name='myName'
),
这是我的视图类:
class myView(FormView, TemplateView):
template_name = 'myApp/myTemplate.html'
form_class = myForm
success_url = reverse_lazy("successPage")
def get_context_data(self, **kwargs):
context = super(myView, self).get_context_data(**kwargs)
myArg1 = int(kwargs["myArg1"])
myArg2 = int(kwargs["myArg2"])
# Do some validation and some other interesting stuff here based on
# the values of myArg1 and myArg2 and put the result into self.newArg
self.newArg = myDummyFunction(myArg1, myArg2)
context["form"] = self.form_class
return context
def form_valid(self, form):
formField1 = form.cleaned_data.get('field1')
logger.debug("self.newArg = %s" % self.newArg) # <--- This Fails! self.newArg doesn't exist!
return super(myView, self).form_valid(form)
【问题讨论】:
标签: python django django-forms django-class-based-views