簡體   English   中英

Django中的部分反向URL查找

[英]Partial reverse url lookup in django

我正在尋找一種有效地對大量Django模型實例進行反向URL查找的方法,理想情況下,無需為每個實例調用一次reverse() 我的原始代碼如下所示:

urls = []
for foo in Foo.objects.all():
    url = django.core.urlresolvers.reverse("foo_details", kwargs={"ver": foo.version,
                                                                  "locale": foo.locale,
                                                                  "name": foo.name})
    urls.append(url)

但是,由於有大量(數千個)Foo對象,因此此過程花費了太長時間。 因此,我一次偽造了一個“部分” URL查找,然后完成了每個實例的工作:

base_url = django.core.urlresolvers.reverse("foo_details", kwargs={"ver": foo.version,
                                                                   "locale": foo.locale,
                                                                   "name": ""})
urls = []
for foo in Foo.objects.all():
    url = base_url + urlquote(foo.name)
    urls.append(url)

這行得通,並且比我的第一個解決方案快得多,但是我現在對url的形式進行了假設,特別是名稱總是出現在最后。 另外,我想為此使用get_absolute_url() ,但這消除了僅對URL進行部分反轉一次,然后完成每個對象的反轉的可能性。

這真的是唯一的方法嗎? 還有其他方法可以保留部分反向查找,然后為每個對象完成URL嗎?

我通常會按照

placeholder = "__placeholder___"
base = reverse("foo_details", 
               kwargs={"ver": foo.version,
                       "locale": foo.locale,
                       "name": placeholder})
# ...
url = base.replace(placeholder, foo.name)

圍繞假設名稱是最后一個路徑組成部分工作。

暫無
暫無

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

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