2013-02-01 77 views
0

閱讀的網址如下:轉義URL參數W/Web.py

example.com/product/xy &ž

urls = ('/product/(.*)', product) 

在產品類上GET我讀的是產品ID從URL中拉出(xy & z)以創建數據庫查詢。其中一些ID在其中有'&',當我在python中收到該值時,它已被轉義。我沒有回過神來,所以我可以正確運行查詢。以下不工作:

product = product.replace("&", "&") 
product = HTMLParser.unescape.__func__(HTMLParser,product) 

什麼在Web.py的最佳實踐,甚至Python的?什麼是最好的方式來甚至診斷這個我自己?謝謝!

+0

你剛剛嘗試過:'import HTMLParser; HTMLParser.HTMLParser()。unescape(product)'? – bernie

+0

這是爲我工作... 高清的main(): 產品= 「www.site.com/xx & Y」 打印產品 產品= product.replace( 「&」, 「&」) 打印產品 main() – keepitreall89

+0

我猜測,但很確定它的web.py如何處理該值。我可以做一個字符串,並使用替換沒有問題。問題是通過web.py讀取這個變量,它處理這個值的方式不同,沒有典型的選項可以工作。不知道如何通過web.py進行診斷。 – DrewK

回答

0

我得到這些產品id出箱,請參閱下面的代碼。

import web 

urls = (
    "/product/(.*)", "Product" 
) 


class Product: 
    def GET(self, product_id): 
     return product_id 


app = web.application(urls, globals()) 


if __name__ == "__main__": 
    #app.run() 
    assert web.__version__ == "0.37" 
    b = app.browser() 
    b.open('/product/xy&z') 
    assert b.status == 200 
    assert "xy&z" in b.data 
    assert "xy&z" not in b.data 
    b.open('/product/xy&z') 
    assert "xy&z" in b.data 

請提供失敗的網址,不返回所需的產品ID。

+0

感謝您讓我的方向正確。我跳過了一段代碼,假設問題出現在sql查詢之前,但事實並非如此。我遇到的問題是創建要在查詢中使用的字典。在字典的聲明中,我調用了product_id使用web.websafe,它正在逃避它。呃,非常感謝讓我走上正軌,下次我需要自己去捕捉。 – DrewK

+0

不客氣!以下是有關測試web.py應用程序的更多信息:http://webpy.org/cookbook/browser_test,但有時您可能只需放入'print',並在從集成web服務器運行web.py應用程序時輸出至控制檯。 –

+0

真棒!感謝您的補充信息。有時候,webpy文檔非常混亂,很難找到正確的信息。 – DrewK