Python 在django中基于类的视图中更新后重定向用户
我正在使用Django 1.11 我正在使用基于类的视图更新配置文件页面,以更新身份验证用户配置文件信息 myapp/accounts/views.pyPython 在django中基于类的视图中更新后重定向用户,python,django,django-class-based-views,django-1.11,Python,Django,Django Class Based Views,Django 1.11,我正在使用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):
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。如何检查数据是否已更新,然后将用户重定向到我的类中的索引类?
2。此方法是否适合使用pk
编辑数据?
我还想在更新后生成我可以使用的flash消息
messages.success(request, "Profile updated")
3。由于类不是have request对象,如何在基于类的视图中使用
消息
。您可以使用获取成功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
如果没有用,我应该删除\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>吗,因为这是从你对我上一个问题的回答中复制的,你,您可以删除它实际上是的删除它您的返回语句return'/'
将用户重定向到基本url。如何重定向到同一个应用程序中的另一个基于类的视图,例如类概要视图(TemaplateView):
或另一个应用程序的类视图?您可以使用django的urlreverse模块。一些文件: