3

我正在使用 Django 1.11。

我正在使用基于类的视图来更新个人资料页面,以更新身份验证用户个人资料信息。

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 教程,这些教程使用基于方法的视图并form.py生成表单,在那里我可以检查请求方法并调用form.save(),然后将用户重定向到个人资料页面(可能是索引)。

1. 如何检查数据是否更新,然后将用户重定向到index我的班级?

2. 这种方法是否适合使用 编辑数据pk

我还想在更新后生成可以使用的 Flash 消息

messages.success(request, "Profile updated")

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

4

1 回答 1

2

您可以使用该get_success_url方法。

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

对象请求位于self. 请注意,我不明白为什么在您的 init 中您正在这样做self.request = None

于 2017-09-13T09:00:31.670 回答