0
我不斷收到一個錯誤:「unhashable type:list」for line(routing_table [key] [0] = [[params],func]。我試圖將一個url和函數傳遞給路由函數。應該使用正則表達式來選擇其他函數的參數,最終目標是讀入「/ page/<page_id>
」,然後選擇<page_id>
並將其替換爲用戶輸入,然後該用戶輸入將被傳遞到函數中。不明白爲什麼這是行不通的。如何使用其他函數將參數傳遞到函數中?
import re
routing_table = {}
def route(url, func):
key = url
key = re.findall(r"(.+?)/<[a-zA-Z_][a-zA-Z0-9_]*>", url)
if key:
params = re.findall(r"<([a-zA-Z_][a-zA-Z0-9_]*)>", url)
routing_table[key][0] = [[params], func]
else:
routing_table[url] = func
def find_path(url):
if url in routing_table:
return routing_table[url]
else:
return None
def index():
return "This is the main page"
def hello():
return "hi, how are you?"
def page(page_id = 7):
return "this is page %d" % page_id
def hello():
return "hi, how are you?"
route("/page/<page_id>", page)
print(routing_table)
#2將允許你輸入你喜歡什麼,但是你可以通過使用'(反引號)字符周圍防止它被解釋爲HTML標記 - 像''。 –
謝謝!我現在編輯。 – kcmallard