【问题标题】:How to Fix UnboundLocalError at /signup/ in Django如何在 Django 中的 /signup/ 处修复 UnboundLocalError
【发布时间】:2019-10-14 11:15:11
【问题描述】:

我想创建一个像注册或注册一样的用户,当我点击提交按钮时出现此错误:

/signup/处的UnboundLocalError

我想注册用户:

local variable 'usercustom' referenced before assignment

这是我的 Views.py

def signup(request):
    registered = False

    if request.method == "POST":
        user_form = UserForm(request.POST or None)
        custom_form = UserCustom(request.POST or None)

        if user_form.is_valid() and custom_form.is_valid():
            user = user_form.save(commit=False)
            user.save()

            custom = custom_form.save(commit=False)
            custom.user = user
            custom.save()

            registered = True
        else:
            print(user_form.errors,custom_form.errors)

    else:
        user_form = UserForm()
        usercustom = UserCustom()

    return render(request,'form.html',{'user_form':user_form,'usercustom':usercustom,'registered':registered})

这是我的 Form.html

{% extends "base.html" %}
{% block body_block %}
      <div class="content-section">
        {% if registerd %}
          <h1>Thank Your For registering!</h1>
        {% else %}
          <h1>Register Here</h1>
          <h3>Fill out the form</h3>

          <form enctype="multipart/form-data" method="POST">
            {% csrf_token %}
            {{ user_form.as_p }}
            {{ usercustom.as_p }}
            <input type="submit" value="Register!" class="btn btn-danger">
          </form>
        {% endif %}
      </div>
{% endblock %}

【问题讨论】:

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


    【解决方案1】:

    这是因为当您尝试发送 POST 请求时未声明 usercustom。您需要将custom_form 变量重命名为usercustom。我已经为你简化了代码。

    def signup(request):
        registered = False
        if request.method == "POST":
            user_form = UserForm(request.POST or None)
            usercustom = UserCustom(request.POST or None)
    
            if user_form.is_valid() and usercustom.is_valid():
                user = user_form.save(commit=False)
                user.save()
    
                custom = usercustom.save(commit=False)
                custom.user = user
                custom.save()
    
                registered = True
            else:
                print(user_form.errors, usercustom.errors)
    
        else:
            user_form = UserForm()
            usercustom = UserCustom()
    
        return render(request,'form.html',{'user_form':user_form,'usercustom':usercustom,'registered':registered})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 2018-04-13
      • 2021-10-14
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 2022-08-22
      相关资源
      最近更新 更多