使用 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/