2015-05-07 4 views
0

Я пытаюсь найти в этом views.py, где Class MovieList ссылается на шаблоны.Django Class Based View для поиска шаблонов

import datetime, calendar 

from django.contrib.contenttypes.models import ContentType 
from django.views.generic import ListView, DetailView 
from django.shortcuts import get_object_or_404, render_to_response 
from django.template import RequestContext 
from django.http import HttpResponse 
from movies.models import Movie, Show 
from common.views import StatsDetailView 
from common.models import Category, HotItem 
from directory.models import Venue 
import tasks 


def _get_movie_dates(): 
    ### 
    # Return list of dates for all future dates with movies showing 
    ### 

    return Movie.objects.filter(shows__starts__gte=datetime.date.today()).values_list('shows__starts', flat=True).order_by('shows__starts').distinct() 

def _get_now_showing(): 
    ### 
    # Return list of movies for now showing 
    ### 

    return Movie.objects.filter(shows__starts__gte=datetime.date.today()).order_by('name').distinct() 

class MovieList(ListView): 
    model = Movie 
    paginate_by = 20 
    context_object_name = 'movies' 
    category = None 
    venue = None 
    date = None 
    slug_level = "" 

    def get_queryset(self): 
     qs = Movie.objects.filter(visible=True,).order_by('-hot', '-showing', 'name') 
     if self.kwargs.get('category', None): 
      slugs = self.kwargs['category'].strip('/').split('/') 
      self.category = get_object_or_404(Category, slug=slugs[-1]) 
      category_ids = [c.id for c in self.category.get_child_categories()] 
      category_ids.append(self.category.id) 
      qs = qs.filter(categories__in=category_ids) 
     if self.kwargs.get('venue', None): 
      self.venue = get_object_or_404(Venue, slug=self.kwargs['venue']) 
      venue_ids = [v.id for v in Venue.objects.filter(parent=self.venue)] 
      venue_ids.append(self.venue.id) 
      qs = qs.filter(shows__venue__in=venue_ids) 
     if self.kwargs.get('shortcut', None): 
      today = datetime.date.today() 
      shortcut = self.kwargs['shortcut'] 
      if shortcut == 'now-showing': 
       qs = qs.filter(shows__starts__gte=today,) 
      elif shortcut == 'today': 
       qs = qs.filter(shows__starts__exact=today) 
      elif shortcut == 'tomorrow': 
       qs = qs.filter(shows__starts__exact=today + datetime.timedelta(days=1)) 
      elif shortcut == 'this-weekend': #Friday - Sunday 
       days = 4 - today.weekday() 
       starts = today + datetime.timedelta(days=days) 
       ends = starts + datetime.timedelta(days=2) 
       qs = qs.filter(shows__starts__range=(starts, ends)) 
      elif shortcut == 'tickets': 
       qs = qs.filter(
        shows__starts__gte=today, 
        shows__venue__name__icontains='imax', 
        visible=True 
       ) 

     if self.kwargs.get('date', None): 
      d = datetime.datetime.strptime(self.kwargs['date'], "%Y-%m-%d").date() 
      self.date = d 
      qs = qs.filter(shows__starts__exact=d) 
     return qs.distinct() 

    def get_context_data(self, **kwargs): 
     context = super(MovieList, self).get_context_data(**kwargs) 
     today = datetime.date.today() 
     #context['categories'] = Category.objects.filter(parent__slug='movies', visible=True,) 
     context['venues'] = Venue.objects.filter(show__starts__gte=today, parent=None, visible=True,).distinct() 
     context['category'] = self.category 
     context['venue'] = self.venue 
     context['date'] = self.date 
     context['dates'] = _get_movie_dates() 
     context['now_showing'] = _get_now_showing() 
     context['nos'] = len(self.slug_level) 

     return context 

class MovieDetail(StatsDetailView): 
    model = Movie 
    context_object_name = 'movie' 

    def get_context_data(self, **kwargs): 
     context = super(MovieDetail, self).get_context_data(**kwargs) 
     today = datetime.date.today() 
     #context['categories'] = Category.objects.filter(parent__slug='movies', visible=True,) 
     context['venues'] = Venue.objects.filter(show__starts__gte=today, parent=None, visible=True,).distinct() 
     context['dates'] = _get_movie_dates() 
     context['now_showing'] = _get_now_showing() 
     return context 


def buy_movie(req, slug): 
    movie = get_object_or_404(Movie, slug=slug) 
    url = 'http://rdtickets.buymore.co.ke/api/buy?movie=%d' % movie.pk 
    return render_to_response(
     'movies/movie_buy.html', 
     locals(), 
     RequestContext(req, {}) 
    ) 

def refresh_buy_more(req): 

    movies = {} 
    venues = {} 
    shows = Show.objects.filter(starts__gte=datetime.date.today()) 

    for show in shows: 
     movies[show.movie.pk] = show.movie 
     venues[show.venue.pk] = show.venue 

    for movie in movies: 
     tasks.post_movie_to_buymore(movies[movie]) 

    for venue in venues: 
     tasks.post_venue_to_buymore(venues[venue]) 

    for show in shows: 
     tasks.post_show_to_buymore(show) 

    return HttpResponse('synced') 

Там нет ссылки на шаблон от того, что я могу найти любую помощь в выяснить, где шаблон будет оценен.

+0

Проверьте ваш ** urls.py ** ... возможно, имя шаблона передается в метод 'as_view()' ... хотя это не лучший способ сделать это. – rnevius

ответ

1

Django docs объясняет, как вид определяет, какой шаблон использовать:

Это весь код Python нам нужно написать. Однако нам все равно нужно написать шаблон. Мы могли бы явно указать, какой шаблон использовать, добавив в представление атрибут template_name, но при отсутствии явного шаблона Django выведет его из имени объекта. В этом случае выведенным шаблоном будет "books/publisher_list.html" - часть «книг» происходит от имени приложения, которое определяет модель, в то время как бит «издателя» - это только нижняя версия имени модели.

Так что в вашем случае, если вы не установите template_name, шаблон по умолчанию будет movies/movie_list.html.