在重定向视图中更改Django模型是否合适?

在重定向视图中更改Django模型是否合适?,django,Django,我正在做一些看起来不正统的事情,但我不确定最佳做法。我允许人们通过链接退订电子邮件。他们可以单击电子邮件中的链接,也可以单击设置页面中的链接 我正在实现Django重定向视图,如下所示: class UnsubscribeView(RedirectView): permanent=False

我正在做一些看起来不正统的事情,但我不确定最佳做法。我允许人们通过链接退订电子邮件。他们可以单击电子邮件中的链接,也可以单击设置页面中的链接

我正在实现Django
重定向视图
,如下所示:

class UnsubscribeView(RedirectView):                                                
    permanent=False                                                                 

    def get_redirect_url(self, *args, **kwargs):                                    
        member = Member.objects.get(pk=self.request.user.pk)                        
        member.email_me = False                                       
        member.save()                                                               
        return reverse('profile_page', args=[member.pk])   
当他们从设置页面取消订阅时,它基本上会使用该设置的相反值重新加载页面。通过电子邮件,它还可以取消他们的订阅,并将他们带到他们的设置页面

使用这种类型的构造通过重定向更改用户设置是否有缺点


谢谢

唯一一件看起来不正常的事情是,您使用GET来更改实例属性,但由于您的链接可能出现在邮件中,因此没有真正的替代方案(只要您不能从电子邮件发布数据,这是好的:p)。你认为哪一部分是非正统的?重定向?@RaphaëlBraud是的,GET和我的网站将有一个302。因为我试图完成的任务需要GET,所以您认为修改概要文件页面GET更有意义吗?在这种情况下,使用302并不是非正统的:在Django文档中,您经常看到代码带有副作用(属性修改+保存),然后是重定向。不,我不认为修改profile_页面GET更有意义:实际上,unscribeview和profile_页面的责任是完全分离的。此外,在特定的邮件上下文中,HTTP级别上发生的事情比修改profile_页面更符合逻辑:单击未订阅的链接,然后重定向到profile页面