具有权限组的django-auth用户(注册)



我该怎么办,如果我让django-auth用户注册,如果用户注册,他们创建的帐户将自动注册在"客户端";权限组。

这是我的观点.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

我认为你应该改变你的观点

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',
]

最新更新