簡體   English   中英

Django 3.0 中的 URL 不區分大小寫?

[英]Case insensitive URLS in Django 3.0?

有沒有辦法讓 Django 2.0 及更高版本的 URL 不區分大小寫?

例如

path('profile/<str:username>/add/',views.AddFriendRedirect.as_view(),name='add_friend'),

如果我做了profile/USERNAME ,當用戶名是 username 全部小寫時,我怎樣才能使它不區分大小寫? 所以即使是 uSErnAmE 也是有效的

我知道舊的url語法有問題和答案,但我想知道它是否可以使用新的path語法

有沒有辦法讓 Django 2.0 及更高版本的 URL 不區分大小寫?

如果完整的 url 不區分大小寫,除了鏈接的 SO post 中的答案之外,我看不到任何其他方式。 但是我從 OP 收集到的是,只有用戶名部分應該不區分大小寫。 如果我們使用正則表達式(?i)遵循解決方案,則此 url 也將是有效的PrOFile/UsERname/AdD

但看起來 OP 只希望用戶名比較不區分大小寫。 使用str轉換器,在 url 中傳遞的任何內容都將按原樣傳遞給視圖。 所以在真正意義上,它已經不區分大小寫了。 這里建議的方法應該是在視圖中使用username__iexact來獲取用戶。

但是,如果我們希望傳遞給視圖的用戶名值與視圖所需的格式相同,例如小寫,我們可以為此注冊一個自定義路徑轉換器。

因為 OP 最初使用字符串轉換器,我們可以擴展它並覆蓋to_python以將值轉換為小寫。 我在這里使用小寫,因為在 OP 中提到用戶名是小寫的。

class IStringConverter(StringConverter):

    def to_python(self, value):
        return value.lower()

# once done, register it as:
register_converter(IStringConverter, 'istr')

# and use it as:
path('profile/<istr:username>/add/',views.AddFriendRedirect.as_view(),name='add_friend'),

暫無
暫無

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

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