如果我注册了django auth用户,该怎么办?如果该用户注册,他们创建的帐户将自动注册到“客户端”权限组中。
这是我的views.py
class SignUpView(CreateView):
form_class = SignUpForm
group = Group.objects.get(name='client')
user.groups.add(group) ==> it didnt work
success_url = reverse_lazy('loginpage')
template_name = 'customAdmin/signup.html'
forms.py
class SignUpForm(UserCreationForm):
first_name = forms.CharField(max_length=30, help_text='Optional')
last_name = forms.CharField(max_length=30, help_text='Optional')
email = forms.EmailField(max_length=254, required=False, help_text='Optional')
class Meta:
model = User
fields = [
'username',
'first_name',
'last_name',
'email',
'password1',
'password2',
]
这是我的html
{% block 'base.html' %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign-Up</title>
</head>
<body>
{% block title %}Sign Page{% endblock title %}
{% block content %}
<h2>Sign Page</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
<br><br>
<a href="{% url 'loginpage' %}">Login</a>
</form>
{% endblock content %}
</body>
{% endblock %}
</html>
提前感谢:)
编辑:我正在使用Django 2.2.4
答案 0 :(得分:1)
我认为您应该改变看法
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
group = Group.objects.get(name='client')
user = form.save()
user.groups.add(group)
user.refresh_from_db() #this will refresh your db
user.profile.firstname = form.cleaned_data.get('firstname')
user.profile.lastname = form.cleaned_data.get('lastname')
user.profile.email = form.cleaned_data.get('email')
user.profile.save()
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=user.username, password=raw_password)
login(request, user)
return redirect('loginpage')
else:
form = SignUpForm()
return render(request, 'customAdmin/signup.html', {'form': form})
和您的表格。py
class SignUpForm(UserCreationForm):
firstname = forms.CharField(max_length=30, help_text='Optional')
lastname = forms.CharField(max_length=30, help_text='Optional')
email = forms.EmailField(max_length=254, required=False, help_text='Optional')
class Meta:
model = User
fields = [
'username',
'first_name',
'last_name',
'email',
'password1',
'password2',
]