Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我在我的模板中没有看到Django个人资料更新表单_Python_Django - Fatal编程技术网

Python 我在我的模板中没有看到Django个人资料更新表单

Python 我在我的模板中没有看到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=

我用的是Django。问题在于用户配置文件更新表单,看起来我做的一切都很好,但是我在生成的HTML模板中看不到更新表单。在表单中,我看到了submit按钮,因此我认为问题不在于HTML文件。这是我的档案

Django模板(部分)

视图.py

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()