2016-03-31 94 views
0

我一直在撞牆上打了幾個小時,並且它可能非常簡單。在基於函數的視圖中動態創建Django URL Slug

我需要從一個模型生成兩個url slugs。其中一個實際上被稱爲slu and並且是用於產品標題的SlugField,另一個是一個是ForeignKey的類別。

理想我想有什麼

url(r'^products/(?P<category>[^\.]+)/(?P<slug>[^\.]+)/$', tool_detail, name='tool_detail'), 

但是,該URL的類別部分一直給人產生「無效字面INT(),基數爲10:‘類’ - 好吧,這是的錯誤之一,我嘗試了許多不同的組合。

型號

... 
slug = models.SlugField() 
category = models.ForeignKey(Category) 
... 

查看

def tool_detail(request, slug): 
    tool = get_object_or_404(Tool, slug=slug) 
    part = get_object_or_404(Part) 
    return render(request, 'tool_detail.html', {'tool': tool, 'part': part}) 

模板

<a href="{% url 'tool_detail' t.category slug=t.slug %}" ... </a> 

URL

url(r'^products/tools/(?P<slug>[^\.]+)/$', tool_detail, name='tool_detail'), 

啊...怎麼看/工具/是硬編碼?

謝謝你的幫助。

回答

2

URL

# query by primary key. 
url(r'^products/(?P<category>[0-9]+)/(?P<slug>[^\.]+)/$', tool_detail, name='tool_detail'), 

# query by the name. 
url(r'^products/(?P<category>[\w]+)/(?P<slug>[^\.]+)/$', tool_detail, name='tool_detail'), 

查看

def tool_detail(request, **kwargs): 
    tool = get_object_or_404(Tool, slug=kwargs.get('slug')) 
    part = get_object_or_404(Part) 
    return render(request, 'tool_detail.html', {'tool': tool, 'part': part}) 

應該把它沒有進行測試。

+0

按名稱查詢對我有用!謝謝。我將'category = t.category'添加到了我的url路徑中。 –

1

在url只傳遞參數slug,但在url標記你傳遞兩個參數。只有修改等作爲 模板

<a href="{% url 'tool_detail' t.slug %}" ... </a> 

如果蛞蝓爲int我們可以改變URL

url(r'^products/tools/(?P<slug>[0-9]+)/$', tool_detail, name='tool_detail'), 

如何通過對URL標籤動態參數的一些例子 https://docs.djangoproject.com/en/1.9/intro/tutorial04/

相關問題