как решить локальную переменную ссылку на пароль перед присваиванием - PullRequest
0 голосов
/ 01 февраля 2019

Я сохраняю данные с помощью пост-запроса, но каждый раз, когда я нажимаю «Отправить», я получаю эту ошибку в своем коде, говоря «ссылка на локальную переменную« пароль »перед назначением».Я проверил все отступы.

@app.route('/admin/new_nurse', methods=['GET','POST'])
@login_required
def create_nurse(): 
    form=NurseForm()
    x=time.strftime("%H:%M:%S")
    if (x>=('00:00:00')and x<=('11:59:59')):
        x=(str('Good Morning'))
    elif x>=('12:00:00')and x<=('15:59:59'):
        x=(str('Good Afternoon'))
    elif x>=('16:00:00')and x<=('23:59:59'):
        x=(str('Good Evening'))

    if form.validate_on_submit():
        if form.picture.data:
            picture_file = save_picture(form.picture.data)
            firstname=request.form['fname']
            surname=request.form['sname']
            date_of_birth=request.form['dob']
            age_of_nurse=request.form['age']
            sex_option=request.form['sexoption']
            nurse_telephone=request.form['telnumber']
            educational_status=request.form['educationalstatus']
            Postal_Address=request.form['postaladdress']
            House_No=request.form['houseno']
            locality=request.form['locality']
            dept=request.form['dpt']
            username=form.username.data
            email=form.email.data
            password=form.password.data
            relative_info=request.form['relative']
        hashed_password= bcrypt.generate_password_hash(password).decode('utf-8')
        Nurse=User(username=form.username.data,email=email,password=hashed_password,date_created=datetime.datetime.now(),image_file=picture_file,first_name=firstname,Sur_name=surname,date_of_birth=date_of_birth,age=age_of_nurse,sex=sex_option,telephone=nurse_telephone,educational_status=educational_status,postal_address=Postal_Address,home_address=House_No,locality=locality,relative_name=relative_info,profile='')
        assign_Dept=Department.query.filter_by(name=dept).first()
        assign_role=Role.query.filter_by(id=3).first()
        assign_role.main_role.append(Nurse)
        assign_Dept.main_dept.append(Nurse)
        db.session.add(Nurse)
        db.session.commit()
        flash(f'Account created for {form.username.data}', 'success')
    data=[{'sex':'Male'}, {'sex':'Female'}]
    result=Department.query.with_entities(Department.name)
    return render_template('addnurse.html',x=x,title="New_Nurse",li="New_Nurse",form=form,data=data,result=result)

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Возможно, вы уже проверили это, но если form.validate_on_submit() вернет True, а form.picture.data - None, вы в конечном итоге будете использовать значение «password», но, по крайней мере, в опубликованном вами коде вы не присваивалилюбая ценность для этого.

0 голосов
/ 01 февраля 2019

Если

if form.picture.data:

имеет значение False, ваша переменная пароля не будет инициализирована, что приведет к указанной ошибке в строке

hashed_password= bcrypt.generate_password_hash(password).decode('utf-8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...