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

redirect user after update in class based view in django

我正在使用 Django 1.11。

我正在使用基于 Class 的视图来更新个人资料页面,以更新授权用户个人资料信息。

myapp/accounts/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.我该如何检查数据是否已更新,然后将用户重定向到我的 class?

中的 index class

2。这种方法适合使用pk编辑数据吗?

我也想在更新后生成我可以使用的 flash 消息

messages.success(request, "Profile updated")

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

您可以使用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.