【问题标题】:how do i use values of if-block outside if-block? [duplicate]如何在 if-block 之外使用 if-block 的值? [复制]
【发布时间】:2021-07-02 19:45:10
【问题描述】:

我想在函数外部从if-block 访问几个变量

例如:我想使用signinuser

@app.route('/signup', methods=['GET', 'POST'])
def register():
    form1 = Signup()
    if form1.validate_on_submit():
        signin = auth_py.create_user_with_email_and_password(form1.email_address.data, form1.password.data)
        user = auth_py.send_email_verification(signin['idToken'])  # for email verification

        name = form1.name.data
        username = form1.username.data
        email_address = form1.email_address.data

        return redirect(url_for('home_page'))
    if form1.errors != {}:   # if no errors occur from validators
        for err_msg in form1.errors.values():
            print(f'there was an error creating the user {err_msg}')
    database(username, name, email_address) # problem is here
    return render_template('sign-up.html', form1=form1)

我想在database() 中使用form1.validate_on_submit() 中的nameusernameemail_address,但我不知道该怎么做。

注意:主程序中还有一些代码尚未编写,因此我无法在 form1.validate_on_submit() 中调用 database() 函数

【问题讨论】:

  • 如果form1.validate_on_submit() 返回False,您希望nameusernameemail_address 的值是多少?
  • @jamesdlin 我希望值为None
  • 在这种情况下,变量根本不存在。解决此问题的一种方法是将这些变量初始化为函数顶部的None

标签: python python-3.x flask


【解决方案1】:
signin = None;
user   = None;    
    def register():
        form1 = Signup()
        if form1.validate_on_submit():
            signin = auth_py.create_user_with_email_and_password(form1.email_address.data, form1.password.data)
            user = auth_py.send_email_verification(signin['idToken'])  # for email verification
    
            name = form1.name.data
            username = form1.username.data
            email_address = form1.email_address.data
    
            return redirect(url_for('home_page'))
        if form1.errors != {}:`enter code here`

在 if 块之外定义变量,这样你就可以使用 if 块之外的变量。

【讨论】:

  • 但我想要从该 if 语句中存储在该变量中的值
  • 为什么你认为你在 if 块中分配的值在 if 块执行后将不可用。 'signin' & 'user' 的范围在 if 块之外,它将保留您要在 if 块中分配的值。
  • @vanditvasa if 块无条件返回。如果if 条件为真,您将永远不会调用您的database 函数。
  • 如果有帮助请投票。 @vanditvasa
猜你喜欢
  • 1970-01-01
  • 2019-12-21
  • 2014-03-14
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
相关资源
最近更新 更多