python - 如何在 django 类基础视图中注册后自动登录
问题描述
我想在成功注册后自动登录用户。
但我的代码现在返回匿名用户
所以,我在 django CBV 中使用 CreateView
视图.py
class SignUpView(CreateView):
template_name = 'users/signup.html'
success_url = reverse_lazy('users:email_confirm_notice')
form_class = CustomUserCreationForm
def form_valid(self, form):
user = form.save()
login(self.request, user)
return super().form_valid(form)
我试试
def form_valid(self, form):
form.save()
new_user = authenticate(username=form.cleaned_data.get('username'), password.cleaned_data.get('password1'))
login(self.request, new_user)
return super().form_valid(form)
success_url 是 TemplateView,它只是显示模板和 customusercreationform 更改错误消息。
预计第一个功能不会有任何变化。
我的问题是什么?
解决方案
我解决了...
但我不明白为什么它会这样工作。
我只是更改如下代码。
注册视图/form_vaild()
def form_valid(self, form):
valid = super().form_valid(form)
login(self.request, self.object)
return valid
是在演。。
推荐阅读
- c# - 如何在 ASP.NET C# WebMethod 中评估 2 个字符串在 JQuery 中返回
- javascript - 在测试期间收到 ArgumentError,但在开发中没有,为什么?
- javafx - JavaFX:如何获取 TableView 中的所有行
- java - 如何按时间戳对对象的 ArrayList 进行排序并获取最后五个元素
- haskell - 我如何遍历一个 n 元素列表并在每个元素上应用一个函数
- python - 如何组合数据框的月和年列以形成时间序列数据
- google-chrome-extension - 在 Chrome 扩展中发出 AJAX POST 请求时的内容安全策略和 connect-src?
- apache-spark - 从pyspark中的数据框ArrayType列中获取前N个元素
- string - 将字符序列转换为字符串的最有效方法(Scala/JVM)
- python - python http服务器2路通信