我想編寫一個小型的django應用程序,它將縮短項目的所有內部URL。直到現在我得到了short_url這幾乎是我們想要的。除了它只接受一個int。現在還有一些其他參數需要在url中進行編碼。需要知道如何做到這一點。django中的URL縮短
最初我們雖然散列爲基礎的實現,但我們需要將它存儲在我們的數據庫,所以這是不好的。
使用密鑰加密數據也是一個選項,但輸出對於短url而言太長。
有人可以建議一個庫或算法,可用於相同的。與short_url不同,我們也有ascii數據。並儘可能我們希望應用程序是無狀態(在DB沒有存儲),或者如果inevetable的,至少不會檢查DB每次是否已經生成的URL(低/無碰撞)
編輯
舉個例子,目前我們的URL格式爲/ project/application .application是一個與項目關聯的列表。現在我們需要的是一個雙向函數,它接受了項目+應用程序並給出了簡短的url。 (例如/ Gjd73)。項目名稱由用戶定義,應用程序名稱是在我們的數據庫中預定義的。
可以有任何數量的項目和應用程序,它們都是ascii,但是因爲那裏的pk值也可以用在它比ascii名字更有用的情況下。
你將不得不將狀態信息存儲在某處。假設您希望該信息在服務器重啓和/或服務器的多個實例間持續存在,則數據庫是唯一的選擇。注意:緩存信息是可能的,但可能會帶來它自己的問題。 –
@PeterRowell看看我添加的lib鏈接,它不存儲在數據庫中,它是一種一對一的函數。同時,我確實提到過,我沒有問題存儲在數據庫中,除非我不需要進行查詢來驗證,如果每次我生成一個新的URL都存在。 :) – georoot
你可以顯示一些示例URL? –