【发布时间】:2016-10-28 07:30:27
【问题描述】:
我正在为 Django 应用程序构建 AJAX 后端,我不知道我是否正确构建它。目前要接受整数值,我需要使用 int() 将它们类型转换为整数,如果我不应用太多样板文件,这会引发异常并始终以 500 结束。这导致我的代码看起来比我想要的稍微混乱,而且我不知道我是否做得正确。这是应用程序中的示例 AJAX 视图:
@ajax_required
def poll(request):
try:
last_id = int(request.POST.get('last_id'))
feed_type = request.POST['feed_type']
except (KeyError, TypeError):
return HttpResponseBadRequest()
if feed_type == 'following' and request.user.is_authenticated():
posts = Post.get_posts(user=request.user, after_id=last_id)
return JsonResponse({
'html': render_to_string('posts/raw_posts.html', {'posts': posts}),
'count': posts.count()
})
return HttpResponseForbidden()
如您所见,我必须做很多样板文件并消除语言本身的一些例外情况,这与我有关,来自 PHP 背景。有没有更好的方法来做到这一点,还是我做的正确?
【问题讨论】:
-
捕获一个 KeyError 并忘记如果,使用
request.POST["last_id"],是什么引发了TypeError? -
@PadraicCunningham 这种方法的问题是当类型转换为 int 时会引发 TypeError。
-
pastebin.com/YsTDFjCL 投射时应该会因输入错误而引发 ValueError
-
@PadraicCunningham 嗯,很好。会改变。编辑:完成
-
@PadraicCunningham 非常感谢您的观察,现在将进行编辑。