2016-12-13 1 views
1

다른 함수에서 함수를 호출하고 있습니다.플라스크가 다른 곳에서 함수 호출하기

함수 내 HTML에서

@app.route('/csv/') 
def download_csv(p): 
    csv = p 
    response = make_response(csv) 
    cd = 'attachment; filename=RosterUnified.csv' 
    response.headers['Content-Disposition'] = cd 
    response.mimetype='text/csv' 
    return response 

이이 버튼 클릭 '다운로드'와 관련된를 호출하고 있습니다.

나는 내에서 이것을 호출 오전 : 콘솔 오류 제공

@app.before_request 
def ros_before_app(): 
    . 
    . 
    . 





    z=open(Filename1) 
    with z as f: 
     p = f.read() 
     download_csv(p) 

    z.close() 
    else: 
     z1=open(Filename) 
     with z1 as f1: 
     p = f1.read() 
     download_csv(p) 

:

return self.view_functions[rule.endpoint](**req.view_args) 
TypeError: download_csv() missing 1 required positional argument: 'p' 

을 클릭에서 '다운로드'버튼을 눌러 다운로드를 제공 서버 문제, 실패

+0

download_csv 함수에서 매개 변수로'p'를 사용하면 경로에 있어야합니다. 이 예제에서는 url에 함수를 넣을 수 없습니다 (string 또는 int 작동 만 가능). p 함수를 가져와야합니다. – LeonF

답변

1

에서 플라스크 @app.route('/') 데코레이터는 함수에 전달되는 인수를 포함해야합니다. URL에 <var> 태그를 추가하면됩니다. URL이 .../csv/file 경우 그래서 당신은 다음과 같을 수 있습니다 코드,

@app.route('/csv/<p>') 
def download_csv(p): 
    csv = p 
    # continue code here... 

변수, csvfile 같습니다. 대신 <p>을 말하는 대신 함수에 전달 된 인수를 넣습니다.

이 데코레이터에서 전달되는 변수에 대한 자세한 내용은 Flask's Variable Rules을 참조하십시오.

+0

감사합니다. 콘솔에서 아래와 같은 오류가 발생하여 다운로드에 실패했습니다. 무엇을 의미합니까? – ananda

+0

[] [] 127.0.0.1 - [13/Dec/2016 13:05:43] "GET/csv/HTTP/1.1 "404 - – ananda

+0

글쎄, 404 오류가 발견되지 않거나 존재하지 않습니다. 127.0.0.1은 로컬 호스트입니다. 이 말은 로컬 호스트에서 "/csv/HTTP/1.1"파일을 가져올 수 없다는 것입니다. 그러나, 나는 몇 년 전에 시작된 웹 개발에 너무 좋지 않다. –

관련 문제