Python 我在我的模板中没有看到Django个人资料更新表单
我用的是Django。问题在于用户配置文件更新表单,看起来我做的一切都很好,但是我在生成的HTML模板中看不到更新表单。在表单中,我看到了submit按钮,因此我认为问题不在于HTML文件。这是我的档案 Django模板(部分) 视图.pyPython 我在我的模板中没有看到Django个人资料更新表单,python,django,Python,Django,我用的是Django。问题在于用户配置文件更新表单,看起来我做的一切都很好,但是我在生成的HTML模板中看不到更新表单。在表单中,我看到了submit按钮,因此我认为问题不在于HTML文件。这是我的档案 Django模板(部分) 视图.py class UserUpdateForm(forms.ModelForm): email = forms.EmailField() first_name = forms.CharField(min_length=5, max_length=
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField()
first_name = forms.CharField(min_length=5, max_length=30)
def supervalid(self):
expr_a = User.objects.filter(first_name=self.cleaned_data['first_name']).exists()
expr_b = User.objects.filter(email=self.cleaned_data['email']).exists()
if expr_b:
raise ValidationError(f'There already exists user with that email, use another one ;)')
if expr_a:
raise ValidationError(f'This name is already used, sorry')
class Meta:
model = User
fields = ['username', 'email', 'first_name']
def __init__(self, *args, **kwargs):
super(UserUpdateForm, self).__init__(*args, **kwargs)
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['image']
@login_required
def profile(request):
if request.method == 'POST':
u_form = UserUpdateForm(request.POST, instance=request.user)
p_form = ProfileUpdateForm(request.POST,
request.FILES,
instance=request.user.profile)
if u_form.is_valid() and p_form.is_valid():
u_form.save()
p_form.save()
messages.success(request, f'Your account has been updated!')
return redirect('self')
else:
u_form = UserUpdateForm(instance=request.user)
p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
'u_form': u_form,
'p_form': p_form,
}
return render(request, 'self/index.html', context)
和最终型号
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.png', upload_to='profile_pics')
def __str__(self):
return f'Profile @{self.user.username}'
def save(self, *args, **kwargs):
# super(Profile, self).save(*args, **kwargs)
super().save()
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.image.path)
呈现的HTML
约书亚-巴雷塔克
我是约书亚
使现代化
我想这些行是用来调试的吧
u_form = UserUpdateForm()
p_form = ProfileUpdateForm()
如果您尝试不使用crispy怎么办?我怀疑找不到附加到表单的
FormHelper
,UserUpdateForm
。尝试在表单上附加一个FormHelper
实例,UserUpdateForm
,如下。你能显示生成的HTML吗?你的意思是截图吗?不,只是浏览器中的HTML代码Joshua-BareTalk我是Joshua Update你能用它更新你的问题吗?如我所见-这两种形式都没有呈现。@someseeapeniseeaharpoon和{{u_形式.email}}也不起作用?@someseeapeniseeaharpoon在模板中,尝试将{u形式}
更改为{u形式.email}
,这应该呈现电子邮件输入。另外,你能从setting.py TEMPLATES发布一个已安装的应用程序吗?@someseeapeniseeaharpon如果它甚至没有呈现字段,那么我能想到的最后一件事是:1)尝试在你的settings.INSTALLED应用程序中添加'django.forms',尽管我认为没有必要在那里添加它,但你可以尝试。。。2) 您的设置有错误。模板。。。3) 检查/pythonX.X/site packages/django/forms/templates/django/forms/widgets中的html文件,如果它们不是空的,还检查文件和整个路径,如果它们具有正确的访问权限
u_form = UserUpdateForm()
p_form = ProfileUpdateForm()