这是我的代码:
views.py
class SignUpView(generic.CreateView):
form_class = SignUpForm
success_url = reverse_lazy('login')
template_name = 'registration/signup.html'
forms.py
class SignUpForm(UserCreationForm):
first_name = forms.CharField(max_length=30, required=True, help_text='Required.')
last_name = forms.CharField(max_length=30, required=True, help_text='Required.')
email = forms.EmailField(max_length=254, required=True , help_text='Required.')
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2',)
class ProfileForm(forms.ModelForm):
location = forms.CharField(max_length=200, required=True, help_text='Required.')
phone = forms.CharField(max_length=10, required=True, help_text='Required.')
class Meta:
model = Profile
fields = ('location','phone')
我不知道如何使用profileform扩展注册表单,我希望用户在注册后一起提交
你可以这样做:-
forms.py
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class SignUpForm(UserCreationForm):
email = forms.EmailField(max_length=200)
password1 = forms.CharField(widget=forms.PasswordInput())
username = forms.CharField(help_text=False)
first_name = forms.CharField(max_length=25)
address = forms.CharField(max_length=200)
phone = forms.IntegerField()
gender = forms.ChoiceField(choices=GENDER_CHOICES)
age = forms.IntegerField()
class Meta:
model = User
fields = (
'first_name',
'address',
'phone',
'gender',
'age',
'email',
'username',
)
signup.html
{% extends "mains/base.html" %}
{% block content %}
<form method="post" action="{% url 'users:signup_view' %}">
{% csrf_token %}
{{ form.as_p }}
<button name="submit">Register</button>
</form>
{% endblock content %}
(代码已成功测试并工作(
您还可以使用Django Crispy Forms来使表单看起来更漂亮、更得体