【问题标题】:Why am I getting the error local variable 'user_form' referenced before assignment为什么我在分配之前收到错误局部变量“user_form”引用
【发布时间】:2019-06-06 07:16:57
【问题描述】:

在代码中,为什么会出现“赋值前引用局部变量'user_form'”错误?

from django.shortcuts import render
from basic_app.forms import UserForm,UserProfileInfoForm

def index(request):
 return render(request,'basic_app/index.html')

def register(request):

 registered=False

 if request.method=="POST":
    user_form=UserForm(data=request.POST)
    profile_form=UserProfileInfoForm(data=request.POST)

    if user_form.is_valid() and profile_form.is_valid():
        user=user_form.save()
        user.set_password(user.password) #Hashing the password
        user.save()

        profile=profile_form.save(commit=False)
        profile.user=user #Sets up one to one relationship

        if 'profile_pic' in request.FILES:
            profile.profile_pic=request.FILES['profile_pic']

            profile.save()

            registered=True

        else:

            print(user_form.errors,profile_form.errors)


    else:
        user_form=UserForm()
        profile_form=UserProfileInfoForm()

return render(request,'basic_app/registration.html',{'user_form':user_form,'profile_form':profile_form,'registered':registered})

这在views.py 文件中。 一段时间以来一直坚持这个项目。请帮忙?

【问题讨论】:

标签: django django-models django-forms django-templates django-views


【解决方案1】:

您的第二个 else 块缩进太远。将其移回一级。

【讨论】:

    【解决方案2】:

    您有缩进问题.. 在此处查看已编辑的问题

    from django.shortcuts import render
    from basic_app.forms import UserForm, UserProfileInfoForm
    
    
    def index(request):
        return render(request, 'basic_app/index.html')
    
    
    def register(request):
        registered = False
        if request.method == "POST":
            user_form = UserForm(data=request.POST)
            profile_form = UserProfileInfoForm(data=request.POST)
            if user_form.is_valid() and profile_form.is_valid():
                user = user_form.save()
                user.set_password(user.password)  # Hashing the password
                user.save()
    
                profile = profile_form.save(commit=False)
                profile.user = user  # Sets up one to one relationship
    
                if 'profile_pic' in request.FILES:
                    profile.profile_pic = request.FILES['profile_pic']
                    profile.save()
                    registered = True
    
                else:
                    print(user_form.errors, profile_form.errors)
    
    
    
        else:
            user_form = UserForm()
            profile_form = UserProfileInfoForm()
        return render(request, 'basic_app/registration.html',  {'user_form': user_form, 'profile_form': profile_form, 'registered': registered})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      相关资源
      最近更新 更多