Django: как отобразить все товары в определенной категории

На моей странице администратора у меня есть 2 приложения. Один для категории, а другой для продуктов.

В категории у меня есть PS3 и PS4, а в товарах.. ну.. у меня есть товары.

Что я хочу сделать, так это отобразить все продукты для категории. Как бы я это сделал? На моих html-страницах есть строка меню: Home, PS3 и PS4. Когда кто-то нажимает на вкладку PS3 или PS4, я хочу, чтобы он отображал продукты для каждой вкладки вместо создания отдельной страницы категории и страницы сведений.

В моей базе данных у меня есть следующие поля для категории: имя. В Товарах у меня есть следующие поля: название, описание, изображение, цена, наличие.

У меня все страницы работают, а мне нужно только отображать товары. Я надеюсь, что я ясно. Я не могу это сделать. Я покажу свой код..

МОДЕЛИ.ПИ..

from django.db import models

# Create your models here.

class Category(models.Model):
    name = models.CharField(max_length=30)

    class Meta:
            ordering = ["name"] 

    def __str__(self):
        return self.name

class Products(models.Model):
    category = models.ForeignKey(Category)
    title = models.CharField(max_length=128)
    description = models.TextField()
    stock = models.IntegerField()
    price = models.DecimalField(max_digits=6, decimal_places=2)
    image = models.ImageField(upload_to="product_images", blank=True)


     class Meta:
            ordering = ["title", "description", "image", "price", "stock"]

    def __str__(self):
            return self.title

В МОИХ ВЗГЛЯДАХ.PY...

from django.shortcuts import render, render_to_response, RequestContext
from django.http import HttpResponse
from category.models import *

def home(request):
      return render_to_response("category/index.html",locals(),context_instance=RequestContext(request))

def ps3(request):
     return render_to_response("category/ps3.html",locals(),context_instance=RequestContext(request))

def ps4(request):
return render_to_response("category/ps4.html",locals(),context_instance=RequestContext(request))

В МОИХ URLS.PY..

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()


urlpatterns = patterns('',

    url(r'^$', 'category.views.home', name='home'),
    url('^ps3/', 'category.views.ps3', name ='ps3'),
    url('^ps4/', 'category.views.ps4', name ='ps4'),
    url(r'^admin/', include(admin.site.urls)),

)

person user3445723    schedule 22.03.2014    source источник
comment
где хочешь показать? в админке или в обычном приложении?   -  person karthikr    schedule 23.03.2014


Ответы (1)


Аргумент context_instance является важной частью здесь, как вы можете видеть, это класс RequestContext, этот класс принимает request в качестве первого аргумента, и вы можете передать любые данные в качестве словаря во втором аргументе:

c = RequestContext(request, {
    'foo': 'bar',
})

Вам нужно использовать это, чтобы передавать данные, которые вы хотите использовать в своих шаблонах. И, пожалуйста, научитесь не повторяться (DRY) и применяйте это в своих URL/представлениях.

person Moayad Mardini    schedule 22.03.2014
comment
Я не думаю, что это обязательно отвечает на вопрос ОП. - person karthikr; 23.03.2014
comment
Почему нет? И как вы могли бы использовать category в шаблоне, если это не в контексте, с чего начать? - person Moayad Mardini; 23.03.2014