UnboundLocalError Python-колба
Возникла ошибка UnboundLocalError, когда я пытаюсь запросить категорию из таблицы категорий, присутствующей в базе данных mysql. UnboundLocalError: локальная переменная 'category', на которую была сделана ссылка перед назначением. Я пытаюсь добавить продукт по таблице базы данных product. Мне нужно выбрать категорию этого продукта из таблицы категорий. Для этого я использую query.all (). Это apps.py
@app.route('/AddProduct',methods=["GET", "POST"])
def add_product():
if request.method =="POST":
name=request.form['name']
price=request.form['price']
description = request.form['description']
category = categories.query.all()
image = request.files['image']
if image and allowed_file(image.filename):
filename = secure_filename(image.filename)
image.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
#cursor = mysql.connection.cursor()
#cursor.execute('SELECT * FROM categories')
#account = cursor.fetchall()
cursor.execute('INSERT INTO products VALUES(NULL,% s,% s,% s,% s,% s)',(name,price,description,image,categoryId))
mysql.connection.commit()
return render_template('Shopping.html',category=category)
Это мой файл shopping.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Admin</title>
</head>
<body>
<form action="/home" method="POST" enctype="multipart/form-data" class="register-form" id="register-form">
<input type="text" name="name" id="name" placeholder="Product Name"/>
<input type="" name="price" id="price" placeholder="price"/>
<input type="text" name="description" id="description" placeholder="description"/>
<input type="file" name="image"><br>
<label for="category">ADD catogory</label>
<select name="category" id="category" class="form-control" required>
<option value="">Select a category</option>
{% for cat in category %}
<option value="cat.categoryId">{{cat.categoryName}}</option>
{% endfor %}
<input type="submit">
</form>
1 ответ
Это потому, что эта строка:
category = categories.query.all()
выполняется только при выполнении запроса POST. Когда вы загружаете страницу в первый раз (GET), переменная
category
не инициализирован.
Вы можете просто переместить эту строку в начало процедуры add_product из
if
блокировать.