我们假设,在网页中我有一个ajax请求,它将不同的参数发送到django视图(例如,通过POST)。
例如:
两个列表必须具有相同的长度。
确保数据正确的最佳方法是什么?
以下是处理此请求的伪代码。
if 'products' and 'products_params' in request.POST and request.is_ajax():
try:
products = [int(p) for p in request.POST['products']]
except ValueError:
return HttpResponseBadRequest()
products_params = request.POST['products_params']
if len(products) != len(products_params):
return HttpResponseBadRequest()
# ok, data is correct, now we can process it
有更好的方法吗?如何确定,由于我们的视图中存在无效数据,我们没有得到意外的异常?
P.S。这是仅限ajax的处理。没有向用户显示任何表单。
答案 0 :(得分:1)
怎么样:
products = [int(p) for p in request.POST['products'] if str(p).isdigit()]
或
products = [int(p) for p in request.POST['products'] if unicode(p).isnumeric()]
我推荐第一个,因为如果您使用ñ,例如unicode
会抛出错误。
您的代码可能如下所示:
if request.is_ajax():
products = [int(p) for p in request.POST.get('products',[]) if str(p).isdigit()]
products_params = request.POST.get('products_params', [])
if (not (products and products_params)) or (len(products) != len(products_params)):
return HttpResponseBadRequest()