我有一些商店,销售产品(每家商店都有自己的产品),我正在实施一项安全检查,以防止一家商店干扰其他商店的产品(以防用户是某种聪明的裤子)。你知道吗
假设用户有权编辑此产品(Id 75)
http://localhost:8000/produtos/edit/75/
但不是这个(身份证号100)
http://localhost:8000/produtos/edit/100/
我希望创建一个_check_permission
方法,既可以在get中使用,也可以在post中使用,但似乎我仍然需要调用另一个if permission is not None
来实际触发给用户的消息。你知道吗
有什么改进的建议吗?似乎有很多代码冗余,而且不是很pythonic(更少的代码)。你知道吗
@method_decorator(login_required, name='dispatch')
class EditarProdutoView(View):
template = 'principal/editar_produto.html'
def get(self, request, produto_id=None):
produto = Produto.objects.get(pk=produto_id)
permission = self._check_permission(produto, request)
if permission is not None:
return permission
form_editar_produto = EditarProdutoForm(
prefix='produto',
instance=produto,
)
return render(request, self.template, locals())
def post(self, request, produto_id=None):
produto = Produto.objects.get(pk=produto_id)
permission = self._check_permission(produto, request)
if permission is not None:
return permission
form_editar_produto = EditarProdutoForm(
request.POST,
prefix='produto',
instance=produto,
)
if (form_editar_produto.is_valid()):
revenda = Revenda.objects.get(pk=request.user.id)
form_editar_produto.save(revenda, commit=False)
return redirect("produtos")
else:
return render(request, self.template, locals())
def _check_permission(self, produto, request):
if produto not in request.user.produto_set.all():
return HttpResponseForbidden("Produto indisponível nesta revenda.")
目前没有回答
相关问题 更多 >
编程相关推荐