将html表单数据转换为基于django类的视图

时间:2013-11-19 07:26:28

标签: python html django django-forms

我在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表单发送错误消息。

我不知道该怎么做,请帮帮我。

3 个答案:

答案 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/以获取更多示例和解释。