我正在尝试使用Django表单制作用户注册视图。 我在网上看过,但找不到任何帮助。也许我听不懂推理,所以欢迎您提供解释。 我使用名为“ Utente”(意大利名称)的自定义类更改了标准用户
查看功能是一种简单的功能,它配置要传递给模板的“上下文”字典,以便可以通知表单或确认或错误。
views.py
def registrazione(request):
context = {}
if request.method == 'POST':
context.update({ 'stato':'post'})
form = UtenteChangeForm(request.POST)
if form.is_valid():
print("--FORM\n",form.cleaned_data,'\n-------')
utente = Utente.objects.create_user(**form.cleaned_data)
print("---UTENTE\n", utente)
login(request, utente)
if utente is not None:
context.update({'utente':utente.username})
else:
print('ERROREEEEEEEEEEEE')
else:
context.update({ 'stato':'errore' })
else: # GET
form = UtenteCreationForm()
if request.user.is_authenticated:
context.update({ 'stato':'loggato' })
else:
context.update({ 'stato':'anonimo'})
context.update({'form':form })
return render(request, 'profilo/registrazione.html', context)
该表单应扩展标准用户创建表单。
forms.py
lass UtenteCreationForm(UserCreationForm):
username = forms.CharField(min_length=5)
email = forms.EmailField(min_length=5)
first_name = forms.CharField()
last_name = forms.CharField()
data_nascita = forms.DateField(input_formats=['%d/%m/%Y'])
cellulare =forms.RegexField(regex=r'^\+?\d{9,15}$')
residenza = forms.CharField(min_length=5)
class Meta(UserCreationForm):
model = Utente
fields = ('username','first_name', 'last_name', 'email', 'data_nascita', 'cellulare', 'residenza')
form.cleaned_data的打印内容放入stdout中(表示全部):
--FORM
{'username': 'thomas', 'email': 'thoma@g.com', 'cellulare': '3341193124', 'residenza': 'viq culonia', 'password': None}
第一个问题,为什么密码总是总是“无”?我尝试使用其他类型的密码,所以我应该已经满足密码要求。
第二个问题(可选),为什么未显示某些字段?他们没有任何要求(我没有设定),那么为什么不重设? 例如:我将“ Paolo”设置为“ first_name”,那么为什么不被接受? data_nascita改为1995年5月23日,所以格式正确,对吧?
注意,这是一个小型的大学项目,因此我最终可以剔除不是基本特征的东西。
谢谢大家的时间。