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')
但是我希望将这个功能组合起来,如果request.POST ['remove_1_k']我可以删除remove_1_rec,或者如果request.POST ['remove_2_k']可以删除remove_2_rec。
但是当我把这两个放在if和elif并传递ajax POST为“remove_2_k”时,接下来会出现错误:
MultiValueDictKeyError:在< QueryDict:{u'remove_2_k':[u'1'],u'faq_quest':[u'q1'],u'faq_answer':[u'中找不到“键'remove_1_k' A1' ]}>“中
我该如何解决这个问题?
答案 0 :(得分:2)
由于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
。
答案 1 :(得分:1)
看起来您正在获取值列表,request.POST.getlist('remove_1_k')
也是如此。它将为您提供该键的值列表,然后使用适当的索引来获取所需的值。
像
rk1 = request.POST.getlist('remove_1_k')
remove_1_rec = db.Query(user_guide).filter('remove_1_k =',
int(request.POST.getlist('remove_1_k')[0]))
.get()