Python 烧瓶模板和重定向问题

Python 烧瓶模板和重定向问题,python,redirect,flask,Python,Redirect,Flask,我有一个页面,你可以点击预先选择的图像或上传自己的图像。我想在这些操作完成后将用户发送到新页面。这两个动作都是同一页 这是用户上载图像并随后发送到显示图像的新页面时的代码: @app.route('/', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': file = request.files['file'] if file and allowed_file(

我有一个页面,你可以点击预先选择的图像或上传自己的图像。我想在这些操作完成后将用户发送到新页面。这两个动作都是同一页

这是用户上载图像并随后发送到显示图像的新页面时的代码:

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return redirect(url_for('uploaded_file', filename=filename))
    return render_template('index.html')


@app.route('/photo/<filename>')
def uploaded_file(filename):
    return render_template('uploaded.html', filename=filename)
@app.route('/',方法=['GET','POST'])
def upload_文件():
如果request.method==“POST”:
file=request.files['file']
如果文件和允许的文件(file.filename):
filename=secure\u文件名(file.filename)
保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
返回重定向(url_for('uploaded_file',filename=filename))
返回渲染模板('index.html')
@应用程序路径(“/photo/”)
def上传文件(文件名):
返回渲染模板('upload.html',filename=filename)
为了尝试将这些图像放入这些函数中,我尝试更改图像的url_,如下所示:

<img href="{{ url_for('uploaded_file') }}" id="doge1" src="{{ url_for('static', filename='img/doge1.png') }}">
<img href="{{ url_for('uploaded_file') }}" id="doge2" src="{{ url_for('static', filename='img/doge2.jpg') }}">
<img href="{{ url_for('uploaded_file') }}" id="doge3" src="{{ url_for('static', filename='img/doge3.jpg') }}">

但我遇到了一个构建错误。我想这是因为我没有上传图像

如何通过单击我的一幅图像重定向到上传的_文件页面?如果我能将图像名(即doge1、doge2或doge3)传递到上传文件函数where is,那就太好了,但我不确定这是否可行

以下是生成错误消息:

werkzeug.routing.BuildError
BuildError: ('uploaded_file', {}, None)

Traceback (most recent call last)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/metersky/code/doge2/app.py", line 29, in upload_file
return render_template('index.html')
File "/usr/local/lib/python2.7/site-packages/flask/templating.py", line 128, in render_template
context, ctx.app)
File "/usr/local/lib/python2.7/site-packages/flask/templating.py", line 110, in _render
rv = template.render(context)
File "/usr/local/lib/python2.7/site-packages/jinja2/environment.py", line 969, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/local/lib/python2.7/site-packages/jinja2/environment.py", line 742, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/metersky/code/doge2/templates/index.html", line 1, in top-level template code
{% block content %}
File "/Users/metersky/code/doge2/templates/index.html", line 31, in block "content"
<img href="{{ url_for('uploaded_file') }}" id="doge1" src="{{ url_for('static', filename='img/doge1.png') }}">
File "/usr/local/lib/python2.7/site-packages/flask/helpers.py", line 312, in url_for
return appctx.app.handle_url_build_error(error, endpoint, values)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1641, in handle_url_build_error
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/site-packages/flask/helpers.py", line 305, in url_for
force_external=external)
File "/usr/local/lib/python2.7/site-packages/werkzeug/routing.py", line 1616, in build
raise BuildError(endpoint, values, method)
BuildError: ('uploaded_file', {}, None)
werkzeug.routing.BuildError
构建错误:('uploaded_file',{},无)
回溯(最近一次呼叫最后一次)
文件“/usr/local/lib/python2.7/site packages/flask/app.py”,第1836行,在调用中__
返回self.wsgi_应用程序(环境,启动响应)
wsgi_应用程序中的文件“/usr/local/lib/python2.7/site packages/flask/app.py”,第1820行
响应=self.make\u响应(self.handle\u异常(e))
文件“/usr/local/lib/python2.7/site packages/flask/app.py”,第1403行,在句柄中
重放(exc_类型、exc_值、tb)
wsgi_应用程序中的文件“/usr/local/lib/python2.7/site packages/flask/app.py”,第1817行
response=self.full\u dispatch\u request()
文件“/usr/local/lib/python2.7/site packages/flask/app.py”,第1477行,完整发送请求
rv=自身处理用户异常(e)
文件“/usr/local/lib/python2.7/site packages/flask/app.py”,第1381行,在handle\u user\u异常中
重放(exc_类型、exc_值、tb)
文件“/usr/local/lib/python2.7/site packages/flask/app.py”,第1475行,完整发送请求
rv=自我分派请求()
文件“/usr/local/lib/python2.7/site packages/flask/app.py”,第1461行,在调度请求中
返回self.view_函数[rule.endpoint](**req.view_参数)
文件“/Users/metersky/code/doge2/app.py”,第29行,在上传文件中
返回渲染模板('index.html')
文件“/usr/local/lib/python2.7/site packages/flask/templating.py”,第128行,位于render_模板中
上下文(ctx.app)
文件“/usr/local/lib/python2.7/site packages/flask/templating.py”,第110行,在_render中
rv=template.render(上下文)
文件“/usr/local/lib/python2.7/site packages/jinja2/environment.py”,第969行,在渲染中
返回self.environment.handle\u异常(exc\u info,True)
文件“/usr/local/lib/python2.7/site-packages/jinja2/environment.py”,第742行,在handle\u异常中
重放(exc_类型、exc_值、tb)
顶级模板代码中的文件“/Users/metersky/code/doge2/templates/index.html”,第1行
{%block content%}
文件“/Users/metersky/code/doge2/templates/index.html”,第31行,在“内容”块中
文件“/usr/local/lib/python2.7/site packages/flask/helpers.py”,第312行,url_中
返回appctx.app.handle\u url\u build\u错误(错误、端点、值)
文件“/usr/local/lib/python2.7/site packages/flask/app.py”,第1641行,在handle\u url\u build\u error中
重放(exc_类型、exc_值、tb)
文件“/usr/local/lib/python2.7/site packages/flask/helpers.py”,第305行,url_中
力(外部=外部)
文件“/usr/local/lib/python2.7/site packages/werkzeug/routing.py”,第1616行,内部版本
引发BuildError(端点、值、方法)
构建错误:('uploaded_file',{},无)

您没有传递“上载的文件”的输入参数,因此会出现错误。可以这样称呼:

href="{{ url_for('uploaded_file', filename='whatever') }}" id="doge1" src="{{ url_for('static', filename='img/doge1.png') }}">

“生成”错误消息是什么?如果可能,请包括stacktrace。@AnthonyKong添加了此消息