2016-10-02 73 views
1

我想通過URL傳遞一個數字,並在另一頁上檢索它。如果我嘗試指定變量類型,則會出現格式錯誤的URL錯誤,並且不會進行編譯。如果我不指定var類型,它將運行,但該變量變成類型無。我也無法將它轉換爲int。我怎樣才能把它作爲一個整數...?提前致謝。Flask URL變量類型無?

這給了我一個錯誤的URL錯誤:

@app.route('/iLike/<int: num>', methods=['GET','POST']) 
def single2(num): 

此運行,但給我的類型沒有任何的變種,我不能一起工作:

@app.route('/iLike/<num>', methods=['GET','POST']) 
def single2(num): 
    try: 
     location = session.get('location') 
     transType = session.get('transType') 
     data = session.get('data') 

     **num = request.args.get('num')** 
+2

'num'的值將被自動作爲函數參數傳遞給函數。你不需要獲取請求參數(這也是其他地方的,因此你沒有得到這個值)。 – poke

回答

3

您在這裏混合路由參數和要求的參數。

您在路線中指定的參數是路線參數,並且是聲明variable routes的一種方法。這些參數的值作爲函數參數傳遞給路由函數。所以在你的情況下,對於你的<num> url部分,該值作爲函數參數num傳遞。

請求參數獨立於路由,並作爲GET參數傳遞給URL。您可以通過request object訪問它們。這就是你在做什麼request.args.get()

完整的例子是這樣的:

@app.route('/iLike/<int:num>') 
def single2(num): 
    print(num, request.args.get('num')) 

開幕/iLike/123現在會導致123 None。請求參數是空的,因爲您沒有指定一個參數。你可以通過打開/iLike/123?num=456來完成,這將導致123 456

1

在你的第二個例子,而不是num = request.args.get('num')儘量簡單地使用num。由於您將其指定爲路由/函數的輸入,因此您應該可以直接訪問它。

1

試試這個:

@app.route('/iLike/<int:num>', methods=['GET','POST']) 
def single2(num): 
    print(num) 
1

您收到None這裏:

num = request.args.get('num') 

因爲你不及格num作爲查詢字符串的元素。

使用時request.args.get('num')

如果我們將不得不URL像這樣的:

localhost:8080/iLike?num=2 

但它不是你的情況。您已將num作爲參數傳遞給函數。所以在你的情況下,只需使用:

@app.route('/iLike/<num>', methods=['GET','POST']) 
def single2(num): 
    try: 
     location = session.get('location') 
     transType = session.get('transType') 
     data = session.get('data') 

     print(num)