2009-11-08 2 views
4

Est-il possible de lier des templates spécifiques pour différents flatpages dans Django?Gabarits spécifiques pour les flatpages dans Django

Par exemple:

/about/ -> templates/flatpages/about.html 
/contact/ -> templates/flatpages/contact.html 

C'est ce que j'ai, mais toutes ces pages pointer vers le modèle default.html

url(r'^(?P<url>about/)$', 'django.contrib.flatpages.views.flatpage'), 
url(r'^(?P<url>contact/)$', 'django.contrib.flatpages.views.flatpage'), 
url(r'^(?P<url>feedback/)$', 'django.contrib.flatpages.views.flatpage'), 

Répondre

7

Je ne sais pas quelle version de Django vous avez, mais dans 1.1.1, il y a un lien "Options avancées" en bas du panneau d'administration d'ajout/modification de flatpage (par exemple, http://127.0.0.1:8000/admin/flatpages/flatpage/add/) Vous pouvez activer les commentaires, activer . exigence de registraion et modèle de changement

Programmatically, vous pouvez le faire.?

from django.contrib.flatpages.models import FlatPage 
my_flat_page = FlatPage.objects.get(title="example") 
my_flat_page.template_name = "/flatpages/example.html" 
my_flat_page.save() 
#or just: 
#from django.contrib.flatpages.models import FlatPage 
#FlatePage.objects.filter(title="example").update(template_name="/flatpages/example.html") 
#if you like one-liners 
1

Bien sûr! Après avoir installé les pages à plat selon les instructions here, vous pouvez remplacer le modèle par défaut (flatpages/default.html) pour une page plate donnée - en particulier, vous pouvez personnaliser les instances de FlatPage model (en particulier le champ template_name, mais pas seulement), soit par programme comme pour tout autre modèle, ou, je crois, dans la page d'administration.

+0

il est impossible de le faire dans l'admin - Je pense que fonctionnalité a été retirée Comment puis-je faire par programme – Eeyore

+0

Obtenez le flatpage vous désir (recherche dans Flatpages.object pour title = "about", etc), définissez son attribut 'template_name' à la valeur désirée (" fla tpages/about.html "etc), enregistrez-le. Comme tout autre modèle, comme je l'ai dit! –

Questions connexes