2016-03-31 26 views
0

İki modelim var - biri araçlar için ve parçalar için bir tane. Liste sayfası aynı olacaktır. Şablonda gösterilenleri URL'ye göre filtreleyebilir miyim?Filtre Django Queryset URL'ye Göre Parametre

Görüntüleme

def tool_list(request): 
    tools = Tool.objects.all() 
    parts = Part.objects.all() 
    return render(request, 'tool_list.html', {'tools': tools, 'parts': parts}) 


def part_list(request): 
    parts = Part.objects.all() 
    tools = Tool.objects.all() 
    return render(request, 'tool_list.html', {'parts': parts, 'tools': tools}) 


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

url

urlpatterns = [ 
    url(r'^products/tools/$', tool_list, name='tool_list'), 
    url(r'^products/parts-supplies/$', part_list, name='part_list'), 
    url(r'^products/(?P<category>[^\.]+)/(?P<slug>[^\.]+)/$', product_detail, name='product_detail'), 
] 
+0

tek bir görünüm için iki farklı URL'ler ister misin? – v1k45

+0

Evet, ürünler/araçlar istiyorum ... 've' ürünler/parçalar-malzemeler ... 'ancak aynı görünüm şablonunu kullanmak istiyorum. Ve "URL" ye dayanarak, queryset, araç ya da parça olacaktır. Şimdi düşünüyorum, bunu yapmanın tek yolu, URL'yi kontrol etmek için şablonumda koşullu ifadeler koymak olabilir. –

cevap

1

Sizin iki görünüm, tool_list ve part_list tam kopyaları olan (I tool_list birleştirmek ve PRODUCT_LIST içine part_list istiyorum) herbiri. Tek bir görünüm oluşturabilir ve ona birden çok URL yollayabilirsiniz. senin URL'ler bu

def product_list(request): 
    tools = Tool.objects.all() 
    parts = Part.objects.all() 
    return render(request, 'tool_list.html', {'tools': tools, 'parts': parts}) 

gibi:

url(r'^products/tools/$', product_list, name='tool_list'), 
url(r'^products/parts-supplies/$', product_list, name='part_list'),