Django 为基于 class 的重定向视图设置事务
Django setting a transaction for class-based redirect view
我有以下基于 class 的视图,具有简单的点赞切换机制:
class PostLikeToggle(RedirectView):
def get_redirect_url(self, *args, **kwargs):
post_id = kwargs.get('pk')
post = get_object_or_404(Post, id=post_id)
user = self.request.user
if post.likes.filter(id=user.id).exists():
post.likes.remove(user)
else:
post.likes.add(user)
url_redirect = post.get_absolute_url(post_id)
return url_redirect
我想将此方法作为原子事务处理,但不确定这样做的正确方法。
我在正确的轨道上吗?
class PostLikeToggle(RedirectView):
@transaction.atomic
def get_redirect_url(self, *args, **kwargs):
有两种方法,第一种是你说的:
class PostLikeToggle(RedirectView):
@transaction.atomic
def get_redirect_url(self, *args, **kwargs):
第二个选项:
def get_redirect_url(self, *args, **kwargs)
try:
with transaction.atomic():
pass # CRUD operations
except IntegrityError:
handle_exception() # this will run after rollback
我有以下基于 class 的视图,具有简单的点赞切换机制:
class PostLikeToggle(RedirectView):
def get_redirect_url(self, *args, **kwargs):
post_id = kwargs.get('pk')
post = get_object_or_404(Post, id=post_id)
user = self.request.user
if post.likes.filter(id=user.id).exists():
post.likes.remove(user)
else:
post.likes.add(user)
url_redirect = post.get_absolute_url(post_id)
return url_redirect
我想将此方法作为原子事务处理,但不确定这样做的正确方法。 我在正确的轨道上吗?
class PostLikeToggle(RedirectView):
@transaction.atomic
def get_redirect_url(self, *args, **kwargs):
有两种方法,第一种是你说的:
class PostLikeToggle(RedirectView):
@transaction.atomic
def get_redirect_url(self, *args, **kwargs):
第二个选项:
def get_redirect_url(self, *args, **kwargs)
try:
with transaction.atomic():
pass # CRUD operations
except IntegrityError:
handle_exception() # this will run after rollback