@nano_e_t_4

Почему функция не видит переменную?

def actions():
    global flash
    node_name = request.args.get('node_name')
    if node_name:
        form = AddForm(obj = get_node_values(node_name))
        check = True
        return render_template('actions.html', form = form)
    form = AddForm()
    if request.method == 'POST' and form.validate_on_submit():
        operator = form.operator_name.data.lower()
       db_values = models.node(operator_name = operator, node_name = node,\
        node_id = nod_id)
        current_page = request.form['current_page']
        if check:
            flash(change_value_in_db(db_value))
            return redirect(url_for('actions'))

При попытке выполнить блок условия if check возникает exeption:
local variable 'check' referenced before assignment
. Не понимаю, отчего оно может возникать, ведь переменная check объявляется и отрабатывается в одной функции (есть подозрение, что из-за ветвления такая ситуация, поэтому гугл в помощь, но если здесь кто знает, подскажите пожалуйста)
Спасибо
  • Вопрос задан
  • 898 просмотров
Пригласить эксперта
Ответы на вопрос 3
@nirvimel
check объявляется только при if node_name: В противном случае остается не объявленной.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
global - плохая практика

а отсутствие CODE - "еще более хужее"

def actions():
    global flash
    node_name = request.args.get('node_name')
    if node_name:
        form = AddForm(obj = get_node_values(node_name))
        check = True
        return render_template('actions.html', form = form)

    form = AddForm()
    if request.method == 'POST' and form.validate_on_submit():
        operator = form.operator_name.data.lower()
        db_values = models.node(operator_name = operator, node_name = node,\
                                                            node_id = nod_id)
        current_page = request.form['current_page']
        if check:
            flash(change_value_in_db(db_value))
    return redirect(url_for('actions'))
Ответ написан
@nano_e_t_4 Автор вопроса
следую хорошим советам:
def actions():
    global flash
    node_name = request.args.get('node_name')
    if node_name:
        form = AddForm(obj = get_node_values(node_name))
        check = True
        return render_template('actions.html', form = form)
    form = AddForm()
    if request.method == 'POST' and form.validate_on_submit():
        operator = form.operator_name.data.lower()
        node = form.node_name.data.lower()
        nod_id = form.node_id.data.lower()
        db_values = models.node(operator_name = operator, node_name = node,\
        node_id = nod_id)
        current_page = request.form['current_page']
        if check:
            flash(change_value_in_db(db_value))
            return redirect(url_for('actions'))
        flash(add_value_in_db(db_values))
        return redirect(url_for('actions'))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы