html - 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')
意见
class RegisterFormView(FormView):
form_class = UserCreationForm
success_url = '/login/'
template_name = 'blog/signup.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)
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}} 和字段。在这两种情况下,电子邮件字段都不会显示和标签。注册正在工作
解决方案
好的,所以我想我已经实现了您的要求。首先,实际上,无需覆盖fields
位于forms.py文件RegisterForm
中的in 。你可以简单地这样写(是Django 定义的 a我们实际用于创建 a ):User
class
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>
如果需要更多帮助,请随时发表评论。
推荐阅读
- python-3.x - 以下程序是否访问文件夹子文件夹中的文件?
- php - 没有在 laravel 邮件中发送邮件正文
- android - 我应该怎么做才能登录谷歌玩游戏
- javascript - 关于元素可见性的Jquery触发功能
- java - 字符串“ACED00057400”代表什么?
- youtube-api - youtube-api 403 使用限制与配额限制
- powerbi - 具有不同粒度的相关表的 DAX 计算列
- apache-kafka - Kafka Streams 加入流 - 设计策略
- shell - 当第一个文件的模式出现在另一个文件中时,如何在新列中打印行号?
- python - PyQt5 界面中的动画 matplotlib