Поле Djangoform не отображается
у меня есть регистрационная форма
формы
class RegisterForm(UserCreationForm):
name = forms.CharField(max_length=255, label='Username', widget=forms.TextInput(attrs={'class': 'form-group'}))
email = forms.EmailField(max_length=255, label='Email', widget=forms.EmailInput(attrs={'class': 'form-group'}))
password1 = forms.CharField(label='Password', widget=forms.PasswordInput(attrs={'class': 'form-group'}))
password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput(attrs={'class': 'form-group'}))
class Meta:
model = User
fields = ('name', 'email', 'password1', 'password2')
html
<form method="POST" class="register-form" id="register-form" action="">
{% csrf_token %}
{% for field in form %}
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% endfor %}
<div class="form-group form-button">
<input type="submit" name="signup" id="signup" class="form-submit"
value="Register"/>
</div>
</form>
я пробовал {{form.as_p}} и для поля . в обоих случаях поле email не отображается и метки тоже. регистр работает
Хорошо, думаю, я достиг того, о чем вы просили. Во-первых, на самом деле, нет необходимости переопределять fields
в RegisterForm
, который находится в вашем forms.py файле. Вы можете просто написать его так (User
- это class
, определенный Django class
, который мы фактически используем для создания superuser
) :
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django.forms import fields
class NewUserForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ("username"
, "email"
, "password1"
, "password2")
def save(self, commit=True):
user = super(NewUserForm, self).save(commit=False)
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
В views.py как вы написали:
from django.shortcuts import render
from django.views.generic import FormView
from .forms import *
from django.urls import reverse_lazy
class RegisterFormView(FormView):
form_class = NewUserForm
success_url = reverse_lazy('boldRichard:login')
template_name = "register.html"
def form_valid(self, form):
form.save()
return super(RegisterFormView, self).form_valid(form)
def form_invalid(self, form):
return super(RegisterFormView, self).form_invalid(form)
class LoginFormView(FormView):
pass
И наконец в register.html :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Register</title>
</head>
<body>
<form method="POST" class="register-form" id="register-form" action="">
{% csrf_token %}
{{form.as_p}}
<div class="form-group form-button">
<input type="submit" name="signup" id="signup" class="form-submit" value="Register" />
</div>
</form>
</body>
</html>
Пожалуйста, не стесняйтесь комментировать, если требуется дополнительная помощь.