我在django应用程序的views.py
中创建了一个类视图。
class HelloTemplate(TemplateView):
template_name = "index.html"
def get_context_data(self, **kwargs):
context = super(HelloTemplate, self).get_context_data(**kwargs)
return context
现在我在html页面中定义了一个表单:
<form method="get">
<input type="text" name="q">
<input type="text" name="q1">
<input type="submit" value="Search">
</form>
如您所见,我在同一页面上提交form
。
现在我想在我的HelloTemplate
课程中获取表单提交的值。我不想在现有类之外创建另一个类或方法。
另外,如果未在django中验证数据,我想向html表单发送错误消息。
我不知道该怎么做,请帮帮我。
答案 0 :(得分:4)
您需要在视图类中定义get
(因为您的表单使用get方法<form method="get">
定义)方法:
class HelloTemplate(TemplateView):
template_name = "index.html"
def get_context_data(self, **kwargs):
context = super(HelloTemplate, self).get_context_data(**kwargs)
return context
def get(self, request, *args, **kwargs):
q = request.GET.get('q')
error = ''
if not q:
error = "error message"
return render(request, self.template_name, {'error': error})
django docs Introduction to Class-based views
中的更多信息答案 1 :(得分:0)
只有一个值,它位于request.GET['q']
。
答案 2 :(得分:0)
快速回复,我可以向您展示我之前做过的评论表单(人们创建新评论,我的模特之一):
def review_form_view(request):
c = {}
c.update(csrf(request))
a = Review()
if request.method == 'POST':
review_form = Review_Form(request.POST, instance=a)
if review_form.is_valid():
a = review_form.save()
return HttpResponseRedirect('../dest_form_complete')
pass
else:
review_form = Review_Form(instance=a)
return render_to_response('../review_form.html', {
'review_form': review_form,
}, context_instance=RequestContext(request))
如果你有用户模型,评论模型等,你可以使用类似的东西。非常(非常)大致放置,请求是用户在表单中填写的输入,'POST'是调用的方法,让服务器知道您正在向数据库添加条目,is_valid()根据以下方式验证数据你的models.py参数(可以命名为NULL吗?年龄是整数吗?等等。)
请查看https://docs.djangoproject.com/en/dev/topics/forms/以获取更多示例和解释。