基于Django类的视图是否将数据发布到ListView?

基于Django类的视图是否将数据发布到ListView?,listview,post,formview,django-class-based-views,django-1.5,Listview,Post,Formview,Django Class Based Views,Django 1.5,我有一个包含两个字段(开始日期、结束日期)的表单,我想将数据发布到ListView下面是我的代码,但我想知道这是在django 1.5基于类的视图中执行post方法的正确方法。可以在同一ListView中编写GET&POST方法,其中in-GET方法将返回ListView,in-POST方法将返回过滤后的ListView,并在同一模板中呈现数据 froms.py class DailytaskfilterForm(forms.Form): start_date = forms.DateF

我有一个包含两个字段(开始日期、结束日期)的表单,我想将数据发布到ListView下面是我的代码,但我想知道这是在django 1.5基于类的视图中执行post方法的正确方法。可以在同一ListView中编写GET&POST方法,其中in-GET方法将返回ListView,in-POST方法将返回过滤后的ListView,并在同一模板中呈现数据

froms.py

class DailytaskfilterForm(forms.Form):
    start_date = forms.DateField()
    end_date = forms.DateField()

    def clean(self):
        cleaned_data = super(DailytaskfilterForm, self).clean()

        try:
            start_date = cleaned_data.get('start_date')
        except:
            start_date = ""

        if not start_date:
            errormsg = "Please Select start Date"
            self._errors["start_date"] = self.error_class([errormsg])

        try:
            end_date = cleaned_data.get('end_date')
        except:
            end_date = ""

        if not end_date:
            errormsg = "Please Select End Date"
            self._errors["end_date"] = self.error_class([errormsg])

        return cleaned_data
Views.py

class DailytaskfilterformView(LoginRequiredMixin, FormView):

    template_name = 'viewdailytask.html'
    form_class = DailytaskfilterForm

    def form_valid(self, form):
        sdate = form.cleaned_data['start_date']
        edate = form.cleaned_data['end_date']
        return HttpResponseRedirect(reverse('dashboard:dailytask-list-filter', kwargs={'start_date':sdate, 'end_date':edate}))

    def form_invalid(self, form):
        return self.render_to_response(self.get_context_data(form=form))

    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

class Dailytaskfilterview(LoginRequiredMixin, ListView):

    template_name = 'viewdailytask.html'
    model = DailyTask
    context_object_name = 'dailytasks'
    paginate_by = 10

    def get_context_data(self, **kwargs):
        context = super(Dailytaskfilterview, self).get_context_data(**kwargs)
        user = self.request.user
        name = User.objects.get(username=user)
        fullname = "%s %s" % (name.first_name, name.last_name)
        context['fname'] = fullname
        context['pk'] = name.pk
        return context

    def get_queryset(self):
        start_date = self.kwargs['start_date']
        end_date = self.kwargs['end_date']
        user = self.request.user
        pk = User.objects.get(username=user).id
        return DailyTask.objects.filter(user=pk).filter(date__range=(start_date, end_date)).order_by('-date')
url.py

url(
    regex=r'dailytask/filter/$',
    view=DailytaskfilterformView.as_view(),
    name='dailytask-filter'
    ),

url(
    regex=r'dailytask/filter/(?P<start_date>[-\w\d]+)/(?P<end_date>[-\w\d]+)/$',
    view=Dailytaskfilterview.as_view(),
    name='dailytask-list-filter'
    ),
url(
regex=r'dailytask/filter/$',
view=DailyTaskFilterPerformView.as_view(),
name='dailytask-filter'
),
网址(
regex=r'dailytask/filter/(?P[-\w\d]+)/(?P[-\w\d]+)/$,
view=DailyStaskFilterView.as_view(),
name='dailytask-list-filter'
),

嗯,很抱歉,但是为什么要发布到
列表视图
?此视图用于显示内容,所有显示视图都应由GET调用,因为POST用于添加和更改。如果您想在列表上进行搜索或筛选,GET比POST更有意义,因为链接可以传递给其他人等等。如果你的过滤器非常复杂,而且有很多项,那么将其转换为一个单独的模型可能是有意义的,然后可以通过类似
/items/?filter=235
@BerislavLopac的东西来存储和引用。如果我写get,那么它会工作,但是,我应该如何使用django表单验证我的表单如果我使用get方法,我必须遵循相同的代码,而不是post方法,我将使用get。我的问题是,是否有其他方法来执行此任务,而不是像我所做的那样将数据发布到另一个视图。请检查My views.py。如果只是筛选而不是实际更改数据库中的值,则无需验证代码。但在查询之前,您始终可以在
get\u queryset
方法中强制执行所需的任何验证。