2014-08-18 2 views
0

미리 선택된 이미지를 클릭하거나 자신의 이미지를 업로드 할 수있는 페이지가 있습니다. 이러한 작업 중 하나가 완료되면 사용자를 새 페이지로 보내고 싶습니다. 두 가지 작업 모두 동일한 페이지입니다. 플라스크 템플리트 및 리디렉션 문제

는 사용자가 이미지를 업로드하고 이후 이미지를 제공합니다 새로운 페이지로 보낼 때 코드입니다 :

@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) 

시도하고 그 기능에 이러한 이미지에 맞게을, 나는 변화 시도 이미지에 대한 url_for는 다음과 같습니다.

<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') }}"> 

하지만 빌드 오류가 발생했습니다. 내가 이미지를 업로드하지 않기 때문이라고 가정합니다.

내 이미지 중 하나를 클릭하여 uploaded_file 페이지로 리디렉션 할 수 있습니까? 업로드 된 파일 기능에 이미지 이름 (예 : doge1, doge2 또는 doge3)을 전달할 수 있으면 좋겠지 만 가능한 경우 확실하지 않습니다.

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) 
+0

'빌드'오류 메시지 란 무엇입니까? 가능한 경우 stacktrace를 포함하십시오. –

+0

@AnthonyKong가 메시지를 추가했습니다. – metersk

답변

1

당신이 입력 매개 변수를 전달하지 않는 '' 'uploaded_file' '그러므로 당신은 오류': 여기

빌드 오류 메시지입니다. 다음과 같이 호출하십시오.

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