django - 在 Django 中正确设置自定义登录重定向
问题描述
我有一个自定义用户模型(继承 AbstractUser):
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils.translation import ugettext_lazy as _
from .managers import UserManager
class User(AbstractUser):
username = None
phone = models.CharField(max_length=16)
email = models.EmailField(_('email address'), unique=True)
is_director = models.BooleanField(default=False)
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
以及处理注册表单的自定义视图:
class SignUpView(CreateView):
template_name = 'form.html'
form_class = UserRegisterForm
form_title = "Family Registration Form"
form_description = "For our younger participants, their parent or guardian should fill out this form."
def get_success_url(self):
return reverse_lazy('Participants:portal', kwargs={'slug': 'scst'})
由以下网址映射:
path('signup/', views.SignUpView.as_view(), name="signup"),
表单加载并成功创建用户。但是,我无法弄清楚如何正确重定向。具体来说,我正在寻找这个:
http://localhost:8000/scst/portal/
我得到:
http://localhost:8000/accounts/login/?next=/scst/portal/
我不明白如何摆脱这/accounts/login/?next=
部分。我搜索了 CreateView 的各种 Classes 和 Mixins。我尝试过覆盖并尝试在文件get_redirect_url
中设置模式。settings.py
HTML 的表单或提交元素中没有“下一个”值。我不知道要改变什么来解决这个问题。
解决方案
可能是因为您的视图“参与者:门户”需要登录,您必须在注册后登录新用户,您可以在form_valid
方法中进行。像那样
from django.contrib.auth import login
def form_valid(self, form)
response = super().form_valid(form)
login(self.request, self.object)
return response
推荐阅读
- node.js - 为什么我们使用 path.join 而不是使用相对路径来访问 express 和节点服务器运行中的公共目录?
- keras - 神经网络可以根据其他时间序列预测时间序列吗?
- elasticsearch - 关于elasticsearch group by 两个字段然后过滤或者排序
- html - 下载HTML文件powershell的所有内容
- ios - 在 UICollectionViewCell 中的 UICollectionView 中实现搜索功能
- python - 定义一个函数并将其用于python中的多个文件或模块
- lodash - Lodash 创建自定义函数的方式
- php - 数据库未连接到生产环境
- python - 获取列中某个唯一值的数量
- matlab - 使用当前时间保存工作区。MATLAB