第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 django 管理界面的管理 URL 中發(fā)送加密的 id?

如何在 django 管理界面的管理 URL 中發(fā)送加密的 id?

守著一只汪 2022-06-02 16:21:57
我有一個使用 django 管理界面的應(yīng)用程序。此應(yīng)用程序允許用戶對其產(chǎn)品執(zhí)行 CRUD 操作。在這些操作期間,管理 URL 會公開該產(chǎn)品的實(shí)際 ID 值,例如https://localhost/product/1/change。我正在尋找一個選項來發(fā)送 URL 中顯示的混淆 ID 值,例如https://localhost/product/F87BA2/change。有人可以分享您對如何實(shí)現(xiàn)這一目標(biāo)的想法嗎?我已經(jīng)有一個為給定 ID 提供混淆值的函數(shù),但是如何在自動生成的管理 URL 中使用此函數(shù)?
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個贊

可能您需要 slug 字段:https ://docs.djangoproject.com/en/2.2/ref/models/fields/#slugfield 它完全符合您的要求。



查看完整回答
反對 回復(fù) 2022-06-02
?
30秒到達(dá)戰(zhàn)場

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個贊

盡管我喜歡 Alexander Kononenko 的回答(我不知道 slugfield,感謝您指出這一點(diǎn)),但使用非常簡單的方法可能仍然值得:


import base64


partnr='23'

partobf=base64.b32encode((bytes(partnr, 'utf-8'))).decode('utf-8').replace('=', '')

print(partobf)


# reverse it, if you need to deduce a part number from a given URL

partnrb=base64.b32decode('{}{}'.format(partobf, '='*(8-len(partobf)%8))).decode('utf-8')    

print(partnrb)

輸出:


GIZQ


23


這適用于任何字符串(不僅是數(shù)字),而且很容易可逆。除了 Base32,您還可以使用 Base64 或任何其他使用與 URL 兼容的字符的編碼。使用此方法,您可以將任何 ID 從明文轉(zhuǎn)換為模糊文本,而無需字典,其中存儲了兩個值。


但是,重要的是要指出,這些(以及到目前為止線程中存在的其他答案)都與加密無關(guān)。因此,OP 可能應(yīng)該更改標(biāo)題。


查看完整回答
反對 回復(fù) 2022-06-02
?
炎炎設(shè)計

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊

可能您可以使用UUIDField,它可以用作唯一標(biāo)識。您可以UUIDField像這樣添加模型:


import uuid


class Product(models.Model):

    unique_id = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)

并將其與 url 一起使用,如下所示:


# url


path('product/<uuid:unique_id>', views.product, name='product')


# view


def product(request, unique_id):

     product = get_object_or_404(Product, unique_id=unique_id)

此外,您可以用UUIDField作主鍵,因?yàn)椋▉碜晕臋n):


通用唯一標(biāo)識符是用于 primary_key 的 AutoField 的一個很好的替代方案。數(shù)據(jù)庫不會為你生成 UUID,所以建議使用默認(rèn)值:


查看完整回答
反對 回復(fù) 2022-06-02
  • 3 回答
  • 0 關(guān)注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號