2013-11-28 2 views
1

에서 장고보기, 나는 모델 제품 객체를 가지고 데이터베이스

from django.db import models 

class Product(models.Model): 
    title = models.CharField(max_length=255, unique = True) 
    description = models.TextField() 
    image_url = models.URLField(verify_exists=True, max_length=200, blank = True, null = True) 
    quantity = models.PositiveSmallIntegerField(default=0) 

    def sell(self, save=True): 
     self.quantity -= 1 
     if save: 
      self.save() 

와라는 템플릿을 객체를 검색 뷰가 데이터베이스에서 Product 객체를 검색하고 템플릿을 사용하여 렌더링 한 다음 결과 문자열이 포함 된 HttpResponse 객체를 반환하도록합니다. 주어진 PRODUCT_ID 상품이 (또는 HttpResponseNotFound을 반환) 404 예외를 발생 찾을 수없는 경우

def productview(request, product_id): 
    """ 
    I dont know how to write here 
    """ 
    #render template "product_view.html" with param product 
    return HttpResponse("product %s" % product_id) 

한편, 나는 가능한 모든 제품의 목록이있는 페이지를 렌더링 할 경우. product_list.html 템플릿은 Product 객체의 반복 가능을 참조하는 컨텍스트 내 단일 매개 변수 제품을 기대합니다.

뷰를 사용하여 사용 가능한 제품을 검색하고이를 사용하여 템플릿을 렌더링하고 결과 문자열을 포함하는 HttpResponse 객체를 반환하는 방법은 무엇입니까?

+0

템플릿을 렌더링하거나 문자열을 반환 하시겠습니까? – lalo

답변

0

당신이 generic views로 시도 매우

def available_products(request): 
    """ 
    I dont know how to write here 
    """ 
    #render template "product_list.html" with param products 
    return HttpResponse("View not implemented!") 

들으?

class ProductDetailView(DetailView): 
    model = Product 
    template_name = 'product_view.html' 


class ProductListView(ListView): 
    model = Product 
    template_name = 'product_list.html' 

    def get_queryset(self): 
     """ 
     Here you can filter the product list 
     """ 
     query_set = super(ProductListView, self).get_queryset() 
     return query_set.filter(quantity__gt=0) 
0
#views.py 
from django.shortcuts import render_to_response 
from .models import Product 

def productview(request): 
    """ 
    Retrive all products 
    """ 
    products = Product.objects.all() 
    return render_to_response('product_list.html',{'products': products}) 

def available_products(request): 
    """ 
    Retrive available products 
    """ 
    products = Product.objects.filter(quantity__gt=0) 
    return render_to_response('product_list.html',{'products': products}) 

또한 정의 된 URL의 패턴에 따라, 하나의 뷰에 통합 될 수있는 이러한 두. 예 :

#urls.py 
urlpatterns = patterns('', 

    url(r'^product/(?P<which>\w+)/$', 'app_label.views.product_view'), 
) 

#views.py 
def product_view(request, which): 
    """ 
    Retrive available products 
    """ 
    if which == 'all': 
     products = Product.objects.all() 
    else: 
     products = Product.objects.filter(quantity__gt=0) 
    return render_to_response('product_list.html',{'products': products})