Django:如何显示特定类别中的所有产品

时间:2014-03-22 21:02:49

标签: django django-models django-templates django-views python-3.2

在我的管理页面中,我有2个应用。一个用于类别,另一个用于产品。

在类别中,我有PS3和PS4,以及产品..我...我有产品。

我想要做的是显示该类别的所有产品。我该怎么做?在我的html页面上,我有一个菜单栏:Home,PS3和PS4。当有人点击PS3或PS4标签时,我希望它显示每个标签的产品,而不是创建一个单独的类别页面和详细信息页面。

在我的数据库中,我有以下类别的字段:名称。在产品中,我有以下字段:标题,描述,图像,价格,库存。

我让所有页面都正常工作,但我只需要显示产品。我希望我很清楚。我不能做到这一点。我会展示我的代码..

MODELS.PY ..

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)),

)

1 个答案:

答案 0 :(得分:0)

context_instance参数是这里的重要部分,正如您所看到的,它是RequestContext类,此类将request作为其第一个参数,您可以在第二个参数中将您想要的任何数据作为字典传递:

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

您需要使用此功能,以传递要在模板中使用的数据。 请学习不要重复自己(干),并将其应用到您的URL /视图中。