我最近开始使用Django,现在我的应用即将完成,我开始思考安全性和最佳实践。
我有一个视图生成页面,并且页面上的不同函数通过传递post请求到各自的视图来进行操作。例如,我有一个名为show_employees的视图,可以通过将post请求传递到delete_employee和update_employee视图来删除和更新员工。
我在每个这些视图之前放置了@login_required装饰器,因为我不希望未经认证的用户访问它们。这样做是否可以?
在delete_employee和update_employee视图中,我只响应AJAX POST请求(使用is_ajax())。这样做是否可以?
当视图成功执行所需操作时,我返回“success”,当表单存在验证错误时则返回“error”,但我仍未处理其他异常。我该如何处理?我应该返回标准的500页通过一个AJAX响应像这样,通过try-except块包装视图以处理所有异常吗?
还有其他方法来保护我的视图吗?
这是我的一个示例视图:
@login_required
def add_site(request):
data = {}
if request.method == 'POST':
if request.is_ajax():
form = AddSiteForm(request.user, request.POST)
if form.is_valid():
site = form.save(commit=False)
site.user = request.user
site.save()
data['status'] = 'success'
data['html'] = render_to_string('site.html', locals(), context_instance=RequestContext(request))
return HttpResponse(simplejson.dumps(data), mimetype='application/json')
else:
data['status'] = 'error'
data['errors'] = {}
for field, error in form.errors.iteritems():
data['errors']['id_'+field] = strip_tags(unicode(error))
return HttpResponse(simplejson.dumps(data), mimetype='application/json')
感谢您的信任。