2017-10-05 1 views
0

su 변수를 다음 경로가있는 다른 경로로 전달하려고합니다.다른 경로에 매개 변수를 전달하면 작동하지 않습니다.

return redirect(url_for('showspace', spacename=user.username, su='Welcome back')) 

경로는 다음과 같습니다 : 경로가 su 매개 변수없이 호출

@app.route('/space/<spacename>', methods=['GET', 'POST']) 
@login_required 
def showspace(spacename, su = None): 
    if su != None: 
     print(su) 

경우 내가 Nonesu를 원한다. 그러나 sushowspaces으로 전달 된 경우 su의 내용을 인쇄하고 싶습니다. 이렇게하면 다음과 같은 오류가 발생합니다.

TypeError: showspace() missing 1 required positional argument: 'su' 

도움 주셔서 감사합니다.

+0

이 파일은 http://xahlee.info/python/function_def.html에 있습니다.이 파일은 Python 2이지만 제대로 적용했다고 생각합니다. 내가 su = None을 사용하지 않고 su 만해도 작동하지 않습니다. – user3080315

+0

죄송합니다, 오독. – hop

답변

0

보기 기능의 각 인수에 대해 url 변수도 만들 수 있습니다.

그래서 당신이 다음에 URL을 변경해야 할 수도 있습니다 : 기본 값이 NULL이 될 것을 필요 다음

@app.route('/space/<spacename>/<su>', methods=['GET', 'POST']) 

과, 당신이 할 수 있습니다 :

def showspace(spacename, su = None) 

이 두 번째 부분을 , 당신은 스스로 알아 냈습니다. 그래서 URL 꾸미기를 조정하면 문제가 해결 될 것입니다.

url(GET)의 값은 사용자가 실제로 쉽게 변경할 수 있으므로 url_for 기능에서 전송 한 값일 필요는 없음을 기억하십시오.

이 방법 사용자의 경우에는 다음과 같이보기를 호출해야합니다 :

<domain>/space/<spacename>/ 

참고 후행 슬래시. 당신이 후행 슬래시없이 전화를 할 수 있도록 좋아하는 경우에 이렇게 두 가지 옵션이 있습니다

새로운 추가 할 새 URL 규칙을 추가 할

  • POST를 사용하여 su을 보내 URL 규칙은 다음과 같이 정의 할 수 있습니다.

    @app.route('/space/<spacename>/<su>/', methods=['GET', 'POST']  
    @app.route('/space/<spacename>/', methods=['GET', 'POST']) 
    def showspace(spacename, su = None): 
        pass 
    
  • +0

    도와 주셔서 감사합니다. 코드를 사용할 때 su 매개 변수없이 example.com/space/test를 호출 할 수 있습니까? – user3080315

    +0

    이에 대한 답이 업데이트됩니다. – senaps

    관련 문제