Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 表单错误时返回ajax选择字段_Django_Django Forms - Fatal编程技术网

Django 表单错误时返回ajax选择字段

Django 表单错误时返回ajax选择字段,django,django-forms,Django,Django Forms,我有一个表单,在用户从“地址”字段中签出后触发对视图的ajax请求。它检索邮政编码,然后用相同的邮政编码填充皮卡。问题是,如果有任何表单错误,那么我从get_pickups视图生成的结果的下拉列表就会丢失。我如何保存它,以便即使在表单错误时也能保留结果 def get_pickups(request): if request.is_ajax(): # Get available pickup dates based upon zip code

我有一个表单,在用户从“地址”字段中签出后触发对视图的ajax请求。它检索邮政编码,然后用相同的邮政编码填充皮卡。问题是,如果有任何表单错误,那么我从get_pickups视图生成的结果的下拉列表就会丢失。我如何保存它,以便即使在表单错误时也能保留结果

def get_pickups(request):   

    if request.is_ajax():   
        # Get available pickup dates based upon zip code
        zip = request.POST.get('zip',None)
        routes = Route.objects.filter(zip=zip).values_list('route',flat=True)       

        two_days_from_today = date.today() + relativedelta(days = +2)

        submitted_from = request.POST.get('template',None)
        if submitted_from == '/donate/':
            template = 'donate_form.html'
            results = PickupSchedule.objects.filter(route__in=routes,date__gt = two_days_from_today, current_count__lt=F('specials')).order_by('route','date')
        else:
            template = 'donate-external.html'
            results = PickupSchedule.objects.filter(route__in=routes,date__gt = two_days_from_today, current_count__lt=F('specials')).order_by('date')          

        return render_to_response(template,{ 'zip':zip, 'results':results}, context_instance=RequestContext(request))
通过jquery调用我的ajax:

$.ajax({
        type: "POST",
        url:"/get_pickups/",
        data: {
        'zip': zip,
        'template':template
        },
        success: function(data){            

                results = $(data).find('#results').html()           
                $("#id_pickup_date").replaceWith("<span>" + results + "</span >");      
        },
        error: function(){
            alert("Error");
        }

我可以想出两种方法:

如果出现错误,请将该下拉列表的内容附加到帖子中,并将其与其他字段中的数据一起返回。缺点是:增加了服务器代码的复杂性 使用javascript检查页面加载/重新加载时zip字段是否为非空。如果它不是空的,例如错误返回,请调用ajax查找以查找下拉列表的缺点:重复计算
我会使用您认为最熟悉python/django或javascript的解决方案,我可以想到两种方法:

如果出现错误,请将该下拉列表的内容附加到帖子中,并将其与其他字段中的数据一起返回。缺点是:增加了服务器代码的复杂性 使用javascript检查页面加载/重新加载时zip字段是否为非空。如果它不是空的,例如错误返回,请调用ajax查找以查找下拉列表的缺点:重复计算
我会使用你认为最熟练的python/django或javascript解决方案,你能举一个表单错误的例子吗?e、 g.邮政编码错误?这不一定是邮政编码错误,但如果表单上存在任何其他错误,例如未输入必填字段。您能否给出表单错误的示例?e、 g.邮政编码错误?这不一定是邮政编码错误,但如果表单上存在任何其他错误,例如未输入必填字段。提交问题后,我意识到我可以用解决方案2中提到的方法来完成。我更愿意在python/django中这样做,但我只是在页面加载时检查字段长度是否大于零,然后进行相同的ajax调用。谢谢提交我的问题后,我意识到我可以用你在解决方案2中提到的方法来做。我更愿意在python/django中这样做,但我只是在页面加载时检查字段长度是否大于零,然后进行相同的ajax调用。谢谢