werkzeug.routing.BuildError:带有烧瓶app图库

时间:2018-04-23 02:13:59

标签: html python-3.x flask

我正在关注此视频,使用flask和python https://www.youtube.com/watch?v=yO_XNCsBIsg&t=636s

创建一个图库

我是这些github文件(coppied @ app.route(' / gallery'))app.pygallery.html并运行确切的代码,但我收到错误:

werkzeug.routing.BuildError: Could not build url for endpoint 'send_image' with values ['filename']. Did you mean 'index' instead?

这是我的确切代码

main.py

#!/usr/bin/env python


from flask import Flask, request, send_from_directory, flash, redirect, render_template, request, url_for,jsonify

#https://stackoverflow.com/questions/32019733/getting-value-from-select-tag-using-flask

# reference to code is from https://pythonprogramming.net/jquery-flask-tutorial/
# and from https://www.blog.pythonlibrary.org/2017/12/13/flask-101-how-to-add-a-search-form/
app = Flask(__name__)

# this runs in the background for registering the compnay link that was put in
@app.route('/background_process')
def background_process():

    lang = request.args.get('proglang', 0, type=str)
    #just checking what was typed, this will be put into a python code eventrually
    return jsonify(result=lang)


@app.route('/')
def index():

    return render_template('interactive.html', data=[{'name':'red'}, {'name':'green'}, {'name':'blue'}])

    filename = request.args.get('proglang')


@app.route("/black" , methods=['GET', 'POST'])
def black():
    select = request.form.get('comp_select')
    if select=="blue":
        return(str("hi")) # just to see what select is
    else:
         return(str("bye"))
import os

@app.route('/gallery')
def get_gallery():
    image_names = os.listdir('./images')
    print(image_names)
    return render_template("gallery.html", image_names=image_names)

if __name__=='__main__':
    app.run(host='127.0.0.1', port=8080, debug=True)

gallery.html

  <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
          integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

</head>
<body>
<div class="container">

    <div class="row">

        <div class="col-lg-12">
            <h1 class="page-header">Thumbnail Gallery</h1>
        </div>
        {{image_names}}
        <hr>
        {% for image_name in image_names %}
        <div class="col-lg-3 col-md-4 col-xs-6 thumb">
            <img class="img-responsive" src=" {{url_for('send_image', filename=image_name)}}">
        </div>
        {% endfor %}
    </div>
</div>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
        integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
        crossorigin="anonymous"></script>

</body>
</html>

我遗漏了我的其他html文件,因为我不需要测试画廊路线。

1 个答案:

答案 0 :(得分:1)

你错过了&#34; send_image&#34; Python代码中的路由:

@app.route('/upload/<filename>')
def send_image(filename):
    return send_from_directory("images", filename)
相关问题