2013-03-16 9 views
11

Ho cercato attraverso il ref e gli argomenti delle viste basate sulla classe della documentazione di Django (Django 1.4) ma non ho trovato alcuna menzione di questo. Come si impostano i nomi dei modelli dinamicamente utilizzando le viste basate sulle classi? Sto cercando la equivalente di classe a base dei seguenti configurazione:In che modo i nomi dei modelli devono essere impostati dinamicamente utilizzando le viste basate sulle classi?

urls.py

from django.conf.urls.defaults import * 
from mysite.views import dynamic 

urlspatterns = patterns('', 
    url(r'^dynamic/(?P<template>\w+)/$', dynamic),) 
) 

views.py

from django.shortcuts import render_to_response 

def dynamic(request, template): 
    template_name = "%s.html" % template 
    return render_to_response(template_name, {}) 

risposta

25

È necessario definire get_template_names che restituisce l'elenco di template_names.

from django.views.generic import TemplateView 

class DynamicTemplateView(TemplateView): 

    def get_template_names(self): 
     return ['%s.html' % self.kwargs['template']] 
+0

Si intende 'classe DynamixTemplateView (TemplateView)' invece di 'def DynamixTemplateView (TemplateView)' presumo. – Bentley4

+0

Sì, intendo classe :) –

+0

Btw, dovevo fare 'return ['% s.html'% self.kwargs ['template']]' invece di 'return [self.kwargs ['template']] 'per evitare di digitare il suffisso html nell'URL. Le viste basate sulla classe sembrano davvero brutte. – Bentley4

Problemi correlati