[英]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.