javascript - 错误: Key not found in QueryDict

标签 javascript jquery django python-2.7 django-views

使用 ajax POST 在两个单独的 URL 上调用remove_1和remove_2。

def remove_1(request):        
    if not request.is_ajax():
        return              
    if request.POST['remove_1_k']:   
        remove_1_rec = db.Query(user_guide).filter('remove_1_k =', int(request.POST['remove_1_k'])).get()        
        remove_1_rec.delete()         
        return HttpResponse('Remove one is done')

def remove_2(request):        
    if not request.is_ajax():
        return             
    if request.POST['remove_2_k']:   
        remove_2_rec = db.Query(faqs).filter('remove_2_k =', int(request.POST['remove_2_k'])).get()        
        remove_2_rec.delete()         
        return HttpResponse('Remove two is done')

但我想以这样的方式组合此函数,以便我应该能够删除remove_1_rec if request.POST['remove_1_k'] 或能够删除remove_2_rec if request.POST['remove_2_k']。

但是当我将这两个放入 if 和 elif 并传递“remove_2_k”的 ajax POST 时,就会出现以下错误:

MultiValueDictKeyError:“在< QueryDict中找不到键“remove_1_k”:{u'remove_2_k':[u'1'],u'faq_quest':[u'q1'],u'faq_answer':[u'a1 ']}>"

我该如何解决这个问题?

最佳答案

由于 request.POST 是类似字典的对象,因此您可以使用 .get() 来获得一些额外的好处。

将您的 if 更改为此

if request.POST.get('remove_1_k'):
   #do stuff to 1_k
elif request.POST.get('remove_2_k').
   #do stuff to 2_k

这将防止引发KeyError

.get() 将从键返回值,如果未提供默认值,则返回 None

关于javascript - 错误: Key not found in QueryDict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189575/

相关文章:

javascript - 颜色框:调用 colorbox.close

javascript - firebase是否支持数组查询?

java - 保存模型返回错误

django - Django 的身份验证应用程序

javascript - 使 HTML 文件成为 CSS 背景 - 可能吗?

jquery - 在 Jquery Ajax 响应中使用选择器和 $(this)

javascript - 前置/附加不起作用(Opera、Safari、Chrome)

jquery - 如何使用 data 属性将它们分配给 div 容器?

python - 在 Django 项目中使用 Web 套接字的最佳方法是什么?

django - 在 Django 上设置 geoip 时出错