我不明白这个错误是什么意思。看来我做的一切都是正确的。
表单.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' object has no attribute 'private_fields'
这是我的views.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})
有一个名为 SignUpForm
的模型是一个非常糟糕的主意,原因有很多。一般来说,以Form
结尾的类应该是表单类,而不是模型类。更重要的是,它很可能是导致错误的原因。
在您的 views.py
中,您可能正在做这样的事情:
from .models import SignUpForm
from .forms import SignUpForm
def some_view(request):
if request.POST:
form = SignUpForm(request.POST)
else:
form = SignUpForm(instance=SignUpForm(col1='foo', col2='bar'))
你猜怎么着?您刚刚将 SignUpForm
form 类的实例传递给您的 SignUpForm
,不是 SignUpForm
型号!
更改您的 SignUpForm
model 的名称,您很可能不会收到错误。
如果这没有帮助,请向我展示此表单的 views.py
。
我是一名优秀的程序员,十分优秀!