2014-10-09 36 views
0

我要服務於在模板表單項目級網站某些網頁,這樣我就可以使用頁眉和頁腳等Django的簡單的網站使用模板

我並不需要爲每個自定義視圖頁面,我只想簡單的模板渲染。我有我的項目/模板文件夾,但每一頁我需要添加一個URL模式settings.py

url(r'index.html',TemplateView.as_view(template_name='index.html')), 

有沒有辦法簡單的/模板的URL的全部內容映射?也許有比這更好的方法。我可以看到如何使用媒體和靜態文件夾執行此操作,但它們不提供模板渲染

+0

我不不完全理解你想要做什麼,但[flatpages](https://docs.djangoproject.com/en/1.7/ref/contrib/flatpages/)是否解決你的問題? – 2014-10-09 12:27:23

回答

0

是的,您可以創建單個網址模式來動態提供htmls,但您必須創建自定義視圖。

from django.views.generic import TemplateView 
from django.template import TemplateDoesNotExist 
from django.http import Http404 

class MyView(TemplateView): 
    def get(self, request, page_name, *args, **kwargs): 
     self.template_name = page_name 
     response = super(MyView, self).get(request, *args, **kwargs) 
     try: 
      return response.render() 
     except TemplateDoesNotExist: 
      raise Http404() 

,並創建一個URL模式爲您查看

from myapp.views import MyView 

urlpatterns = patterns('', 
    url(r'^(?P<page_name>.+\.html)$', MyView.as_view()), 
) 
0

一種方法是使模板的名稱相匹配你傳遞給視圖的查詢參數:

url(r'^(?P<template>[-\w]+)/$', 'render_template'), 
url(r'^$', 'render_template'), 


def render_template(request, template=None): 
    if not template: 
     template = 'home' 

    return render(request, template + '.html')