问题描述
我从教程开始做 django eshop,一切都很顺利,直到当我尝试在用户中制作内阁时一切都崩溃了:
这是我的views.py
from django.shortcuts import render,redirect
from django.contrib.auth.forms import UserCreationForm
from .forms import RegisterForm
from django.contrib.auth import authenticate,login as django_login,logout as django_logout
from .models import Profile
from .forms import ProfileForm
def cabinet(request):
django_user = request.user
profile = Profile.objects.get(user=django_user)
context = {
'form': ProfileForm(instance=profile)
}
return render(request,'users/cabinet/main.html',context)
我的 main.html
{% extends 'base.html' %}
{% block content %}
<h1>Welcome {{ request.user.username }}!</h1>
<form action="" method="post"> {% csrf_token %}
<div>
<label for="">First name</label>
<input type="text" name="first_name" value="{{ request.user.first_name }}">
</div>
<div>
<label for="">Last name</label>
<input type="text" name="last_name" value="{{ request.user.last_name }}">
</div>
<div>
<label for="">Email</label>
<input type="email" name="email" value="{{ request.user.email }}">
</div>
{{ form }}
<button class="btn btn-success">Save</button>
</form>
{% endblock content %}
我的模型.py
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OnetoOneField(User,on_delete=models.CASCADE)
phone_number = models.CharField(max_length=13,blank=True,null=True)
rate = models.IntegerField(default=4)
def __str__(self):
return '{} Rate: {}'.format(self.user.username,self.rate)
和我的 forms.py
from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
from .models import Profile
class RegisterForm(UserCreationForm):
first_name = forms.CharField(max_length=225,required=False)
second_name = forms.CharField(max_length=225,required=False)
email = forms.EmailField(max_length=255,required=False)
def save(self,*args,**kwargs):
print('Custom save!!')
print(self.cleaned_data)
django_user = User.objects.create_user(
username=self.cleaned_data['username'],password=self.cleaned_data['password1'],first_name=self.cleaned_data['first_name'],last_name=self.cleaned_data['second_name'],email=self.cleaned_data['email']
)
Profile.objects.create(user=django_user)
return django_user
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = '__all__'
我认为 [class ProfileForm] 中的问题,因为我收到错误 -.ImproperlyConfigured:禁止创建没有 'fields' 属性或 'exclude' 属性的 ModelForm;形式教授 ileForm 需要更新。
但我确实提到了 Fields!为什么它不起作用? :(
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)