python
  • flask
  • 2014-12-20 3 views 0 likes 
    0

    url_for 함수에 URL 매개 변수 (요청 아님)를 전달할 수있는 방법을 찾으려고합니다. 그러나 찾을 수 없습니다. 다음 예제에서는 incrRight과 마찬가지로 양식을 통해 q_id을 전달해야합니다. 그렇다면이 시나리오에서는 어떻게 변수를 url_for에 넣을 수 있습니까?플라스크 - 매개 변수가있는 HTML을 HTML로 생성합니다.

    <form action="{{url_for('answer',q_id='5495eb77433f064294361ceb')}}" method="post"> 
        <input type="text" name="incrRight" value="0"> 
        <input type="submit"/> 
    </form> 
    

    이것은 내가 내 컨트롤러에있는 것입니다 :

    @app.route('/api/v1.0/question/<string:q_id>/answer', methods = ['POST']) 
    def answer(q_id): 
        incrRight = request.form.get('incrRight') 
        . . . 
    

    은 내가 q_id과 incrRight 매개 변수를 전달하여, 위의 함수와 통신 할 수 있도록 내 HTML 양식이 필요합니다.

    +0

    양식에 의해 형성된 * 쿼리 매개 변수 *를 의미합니까? 이 경우 메서드를 'GET'으로 변경해야합니다. 또는 POST 본문에서 의미합니까? 어느 쪽이든, 당신은 매개 변수로 그들을 포함하는 브라우저를 의미합니까? –

    +0

    양식은 ** '대답/5495eb77433f064294361ceb? incrRight = ' '를 생성하지 않습니다. ''../answer/5495eb77433f064294361ceb''를 생성 할 것이고'incrRight = '는 URL이 아닌 POST 본문으로 전송됩니다. –

    답변

    1

    <input> 태그를 추가하여 양식 매개 변수를 추가 할 수 있습니다. 양식의 사용자가 변경된 항목 안되는 경우 <input type="hidden"> 요소 사용

    <form action="{{ url_for('answer') }}" method="post"> 
        <input type="text" name="incrRight" value="0" /> 
        <input type="hidden" name="q_id" value="5495eb77433f064294361ceb" /> 
        <input type="submit"/> 
    </form> 
    

    을이 하지은 물론, answer()보기는 q_id 매개 변수없이 호출 할 수있는 것을 요구 :

    @app.route('/api/v1.0/question/answer', methods=['POST']) 
    @app.route('/api/v1.0/question/<string:q_id>/answer', methods = ['POST']) 
    def answer(q_id=None): 
        if q_id is None: 
         q_id = request.form['q_id'] 
        incrRight = request.form.get('incrRight') 
    

    URL에 q_id 매개 변수가 없기 때문에 브라우저는 POST 본문에 질문 ID를 포함 시켰습니다.

    또 다른 옵션은 양식의 q_id 필드를 기반으로 action 매개 변수를 기반으로 매개 변수를 조정하는 자바 스크립트 코드를 작성하는 것입니다.하지만 방문자가 JavaScript를 사용할 수 있어야합니다.

    +0

    그렇다면 q_id가 필수적이라면 "{{url_for ('answer', q_id = 'dsad21')}}"에 입력하고 하드 코딩 된 값을 덮어 쓸 입력 필드를 추가해야합니까? – Giannis

    +0

    @ 지아 니스 : 아니오, 양식을 게시 할 위치를 알기 위해 브라우저에서 URL을 사용합니다. 플라스크가 올바른보기로 라우팅됩니다. 'q_id' 매개 변수없이 게시 *를 허용하도록보기 등록을 조정해야합니다 *. –

    +0

    @ 지아 니스 : 당신이 의미하는 것으로 인식하는 URL의'q_id' 필드에 특수 코드를 넣을 수 있습니다. * 대신 POST 본문에서 질문 ID를 찾습니다. *; 하지만 제 버전에서는 대신에 id라는 질문을 사용하지 않았습니다. –

    관련 문제