簡體   English   中英

django:如何從數據庫對象的主鍵中散列URL?

[英]django: How do I hash a URL from the database object's primary key?

我正在嘗試為我的數據庫對象生成URL。 我已經讀過我不應該使用URL的主鍵,並且存根不是這個特定模型的好選擇。 根據該鏈接中的建議,我在Python解釋器中使用zlib.crc32(),發現值通常會返回負數,而我的URL中不需要這些數字。 我應該使用更好的哈希來生成我的URL嗎?

更新:我最終使用David提出的按位XOR屏蔽方法,並且它工作得非常好。 感謝大家的投入。

首先,“不要在URL中使用主鍵”只是一個非常弱的准則。 如果您正在使用增量整數ID 您不想透露這些數字,那么您可以對它們進行一些混淆。 例如,您可以使用: masked_id = entity.id ^ 0xABCDEFABunmasked_id = masked_id ^ 0xABCDEFAB

其次,您鏈接的文章非常可疑。 我不相信。 首先,CRC32是一種單向散列函數:通常不可能(通常)采用CRC32散列並返回用於創建該散列的字符串。 你會注意到他沒有告訴你如何在他們的pk的CRC32下查找Customer 其次,文章中的代碼甚至沒有意義。 zlib.crc32函數需要一個字節字符串,而Customer.id將是一個整數。

第三,如果你想為一個URL使用一個slug,要小心:如果slug改變了,你的URL也會改變。 這可能沒問題,但這是你需要考慮的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM