Я пытаюсь загрузить изображение из формы в базу данных во Flask на учебном веб-сайте электронной коммерции, над которым я работаю.Я использую флеш-загрузку для обработки загрузки файлов, так как это кажется проще, чем другие способы загрузки файлов.Я получаю следующую ошибку "NameError: имя 'images' не определено".Эта ошибка, по-видимому, возникает в файле rout.py, который обрабатывает функции и маршрутизацию сайта.Я перечислю основные части кода ниже.Функция add_item в файле rout.py берет то, что было отправлено формой, и отправляет эти данные в базу данных. Как я уже сказал, именно здесь происходит ошибка, поскольку изображения не могут быть распознаны, но я не могу понять, как решить проблему .Init.py - это пакет, в котором хранится соединение колба-загрузка.Config.py используется для определения конфигураций приложения.Функция addItem в файле forms.py используется для разметки структуры формы.Файл HTML, который не включен в этот документ, поскольку я не думаю, что он связан с проблемой, использует структуру формы в forms.py для отображения формы на экране.
Я попытался найтирешение в Интернете, но нет очень подробных решений этой проблемы, и документация Python Flask уже достаточно ограничена, но Flask-Upload не имеет очень хорошей документации, особенно в отношении использования с базами данных.Я новичок в Python Flask, так что если кто-нибудь сможет мне помочь с этим вопросом, который будет очень признателен..py:
from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
from flask_uploads import UploadSet, IMAGES, configure_uploads
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
login = LoginManager(app)
# Configure the image uploading via Flask-Uploads
images = UploadSet('images', IMAGES)
configure_uploads(app, images)
from app import routes, models, errors
config.py
import os
basedir = os.path.abspath(os.path.dirname(__file__))
TOP_LEVEL_DIR = os.path.abspath(os.curdir)
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'abcdef'
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
UPLOADS_DEFAULT_DEST = TOP_LEVEL_DIR + '/app/static/img/'
UPLOADS_DEFAULT_URL = 'http://localhost:5000/static/img/'
UPLOADED_IMAGES_DEST = TOP_LEVEL_DIR + '/app/static/img/'
UPLOADED_IMAGES_URL = 'http://localhost:5000/static/img/'
forms.py
class addItem(FlaskForm):
name = StringField('Name',validators=[DataRequired()])
price = IntegerField('Price',validators=[DataRequired()])
description = StringField('Description',validators=[DataRequired()])
stock = IntegerField('Stock',validators=[DataRequired()])
image = FileField('Image', validators=[FileRequired(), FileAllowed(images, 'Images only!')])
submit = SubmitField('Submit',validators=[DataRequired()])