【发布时间】:2019-09-28 03:37:00
【问题描述】:
我不明白这个错误是什么意思。看来我做的一切都是正确的。
forms.py:
from django import forms
from django.forms import ModelForm
from .models import SignUpForm
class SignUpForm(forms.ModelForm):
class Meta:
model = SignUpForm
fields = ['name', 'company', 'city', 'country', 'email', 'password']
widgets = {
'password': forms.PasswordInput(),
}
这会抛出:
AttributeError: 'ModelFormOptions' 对象没有属性 'private_fields'
这是我的观点.py
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from .forms import signup
from django.utils.html import format_html
from django.contrib import messages
from .models import signup
def index(request):
return render(request, 'myapp/index.html')
def signup(request):
if request.method == 'POST':
register_form = signup(request.POST)
if register_form.is_valid():
post = register_form.save()
message = format_html("Hi {0}, Thank you for signing up with us! See your profile <a href=''>{1}</a>".format(register_form.cleaned_data['name'], "here"))
form = signup()
return render(request, 'myapp/register.html', {'signup':NewForm, 'message': message})
else:
message = register_form.errors
form = signup()
return render(request, 'myapp/register.html', {'signup':form, 'message': message})
else:
form = signup()
return render(request, 'myapp/register.html', {'signup':form})
【问题讨论】:
-
请分享从
.models导入的SignUpForm的定义以及错误的完整堆栈跟踪。此外,将相同的类名用于两个不同的事物(forms.SignUpForm和models.SignUpForm)会遇到麻烦。 -
请完整回溯..
-
你确定需要
PasswordInput()末尾的括号吗? -
@JohnGordon 在这种情况下他不需要它们,但如果他确实初始化小部件不会引起任何问题。来自docs:
The widgets dictionary accepts either widget instances (e.g., Textarea(...)) or classes (e.g., Textarea).
标签: python django django-models django-forms