2010-09-07 65 views

回答

1

恕我直言,永久不應該包含查詢參數。這聽起來不太合適。

也就是說,有一個非常笨拙和非Django的方式來返回類似於您從模型的get_absolute_url()方法中指定的URL。

步驟

加上一個假的URL和相應的飯桶視圖。對於例如

# models.py 
class MyModel(models.Model): 
    ... 
    @models.permalink 
    def get_absolute_url(self): 
     return ('dummy_url', [str(self.id), self.filter]) 

# urls.py 
url(r'^news/(?P<model_id>\d+)/\?category=(?P<category>\w+)$', 
    'dummy_url', {}, name = 'dummy_url'), 

# views.py 
def dummy_url(request, *args, **kwargs): 
    pass 

這個虛擬的只會產生的URL。即如果您執行instance.get_absolute_url(),您將獲得正確的URL。

您必須添加另一個適當 URL配置和匹配視圖實際顯示實例頁面時會調用該網址。像這樣的東西。

# urls.py 
url(r'^news/(?P<model_id>\d+)/$', 
    'correct_view', {}, name = 'correct_view'), 

# views.py 
def correct_view(request, *args, **kwargs): 
    # do the required stuff. 

correct_view將不得不雖然提取從requestGET參數。

請注意虛擬和正確的URL配置有多相似。只有查詢參數在虛擬中是額外的。

+0

嗯,哇。好吧,如果我不使用獲取參數,那麼我將如何傳遞可能包含空間或'等的東西的文本? – killerbarney 2010-09-09 21:41:10

+0

看到這個問題。這是關於傳遞帶有空格的文本到一個URL。 http://stackoverflow.com/q/3675368/140185另外,你不能傳遞一個ID或一個slu instead,而不是與空格/逗號字段? – 2010-09-10 03:11:32

+0

我想通過一個人的名字。由於它可以在地方顯示爲鏈接,所以POST看起來不正確。一個slu may可能會工作,但它是正確的在URL中有一個撇號?這看起來不正確 – killerbarney 2010-09-10 03:52:01