Django简单的网站与模板

时间:2014-10-09 11:11:51

标签: django django-templates django-views

我想以模板形式为项目级别的网站提供一些页面,所以我可以使用页眉和页脚等。

我不需要每个页面的自定义视图,我只想要简单的模板渲染。我的项目有/ templates文件夹,但是对于每个页面我需要添加一个url模式settings.py

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

有没有办法简单地将/ templates的全部内容映射到网址?也许有比这更好的方法。我可以看到如何使用媒体和静态文件夹执行此操作,但他们不提供模板渲染

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:-1)

是的,您可以创建单个网址格式以动态提供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()

并为您创建单个网址格式

from myapp.views import MyView

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