在django中基于类的视图中更新后重定向用户

时间:2017-09-13 08:53:22

标签: python django django-class-based-views django-1.11

我正在使用Django 1.11。

我使用基于类的视图更新个人资料页面,更新了auth用户个人资料信息。

的myapp /帐户/ views.py

class UpdateProfile(UpdateView):
    model = User
    fields = ['first_name', 'last_name']

    template_name = 'accounts/update.html'

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.request = None

    def get_object(self, queryset=None):
        return self.request.user

这适用于更新个人资料。但更新后,它会出错

No URL to redirect to.  Either provide a url or define a get_absolute_url method on the Model.

我按照一些YouTube教程here使用基于方法的视图和form.py生成表单,在那里我可以检查请求方法并调用form.save()然后将用户重定向到个人资料页面(可能是索引)。

1。我怎样才能检查数据是否已更新,然后将用户重定向到我班级的index课程?

2。此方法是否适合使用pk

编辑数据

我还想在更新后生成flash消息,我可以使用

messages.success(request, "Profile updated")

第3。由于类没有请求对象,如何在基于类的视图中使用messages

1 个答案:

答案 0 :(得分:0)

您可以使用get_success_url方法。

def get_success_url(self):
    messages.success(self.request, 'Profile updated')
    return '/' # or whatever url you want to redirect to

对象请求位于self。请注意,我不明白为什么在你的初始化中你做self.request = None