Как обслужить все изображения из каталога один за другим, используя колбу - PullRequest
0 голосов
/ 04 марта 2019

Я писал веб-приложение, в котором я должен показывать изображения одно за другим из каталога, и я могу показать следующее изображение только после того, как я закончу собирать ответ из одного изображения, т.е. я могу показать только следующее изображение при нажатии на следующееКнопка.

@app.route("/", methods=["GET", "POST"])
def index():
    # set session for image results
    if "file_urls" not in session:
    session["file_urls"] = []
    # list to hold our uploaded image urls
    file_urls = os.listdir("./static/memes")
    print(file_urls)

    if request.method == "POST":
        session["file_urls"] = file_urls
        return redirect(url_for("results"))
    if request.method == "GET":
        return render_template("index.html")

    return render_template("index.html")

Здесь я получаю пути к изображениям и сохраняю их в виде списка.

@app.route("/results", methods=["GET", "POST"])
def results():

    form = annotationform()
    if "file_urls" not in session or session["file_urls"] == []:
        return redirect(url_for("index"))
    images = session["file_urls"]
    session.pop("file_urls", None)`

    for image in images:
        directory = "./static/memes"
        image = os.path.join(directory, image)
        if request.method == "GET":
            # redirect to home if no images to display

            # set the file_urls and remove the session variable

            return render_template("results.html", file_urls=image, 
 form=form)

        if request.method == "POST":
            csv_list = []

            csv_list.append(form.sarcasam.data)
            csv_list.append(form.humour.data)
            csv_list.append(form.Offence.data)

            with open("data.csv", "a") as csvFile:
                writer = csv.writer(csvFile)
                writer.writerow(csv_list)
            csvFile.close()
            print(form.sarcasam.data)
            print(form.humour.data)
            print(form.Offence.data)
            if(len(images) > 0):
                return redirect(url_for("results"))
            else:
                return redirect(url_for("results"))

Я пытался зациклить их.Пожалуйста, помогите мне в этом.Спасибо.

1 Ответ

0 голосов
/ 05 марта 2019

Ваша проблема заключается в следующем:

for image in images:
    # some code
    return # something

Когда вы выполняете оператор return внутри цикла, он прерывает цикл, поэтому вы будете возвращаться только один раз, в данном случае только первое изображение.

Вы разработаете другой программный поток.

...