如何在Django表单中实时检查输入节

时间:2018-06-08 19:34:10

标签: django

我不知道如何准确地调用它,但我想要做的是当我在下面的模型中输入website属性中的内容时,我希望输入部分通知我它是否已经存在或不。每当我输入一个角色时,它必须检查存在,因为在填写除website属性之外的所有输入部分时,通知我有关存在的时间是浪费时间。

Django表格或某些东西是否已经支持此功能?如果没有,任何人都可以指导我实现此功能的有效方法吗?

class Store(models.Model):
    ...
    website = models.CharField(max_length=100)
    ...

更新

views.py

class StoreCreateView(UserPassesTestMixin, CreateView):
    model=Store
    template_name='cms/store_new.html'
    fields='__all__'
    success_url=reverse_lazy('cms:store')

    def get(self, request, *args, **kwargs):
        val = request.GET.get('val')
        exist = Store.objects.filter(website__iexact=val).exists()
        # return HttpResponse({'exist':exist})
        return render(request, 'cms/store_new.html', {'exist': exist})

    def test_func(self):
        return self.request.user.is_staff

1 个答案:

答案 0 :(得分:0)

正如评论中已经提到的,您需要使用AJAX,这是一个示例:收听目标输入的任何事件。


$(document).on("keypress",'id_input',function(){
    var val = $(this).val();
    $.ajax({
        url:"",
        type:"GET",
        data:{        
            val:val,
        },
        success:function(data){
            if(data.exist)
                alert('Already Exist')
        },
    });
});

然后在您的视图中,您需要检索数据并检查它是否存在,并返回Json Response


from django.http import JsonResponse

class StoreCreateView(UserPassesTestMixin, CreateView):
    model=Store
    template_name='cms/store_new.html'
    fields='__all__'
    success_url=reverse_lazy('cms:store')

    def get(self, request, *args, **kwargs):
        if request.is_ajax():
            val = request.GET.get('val')
            exist = Store.objects.filter(website__iexact=val).exists()
            return HttpResponse({'exist':exist})
            return JsonResponse({'exist':exist})
        return render(request, 'cms/store_new.html', {'exist': exist})

    def test_func(self):
        return self.request.user.is_staff