我想以模板形式为项目级别的网站提供一些页面,所以我可以使用页眉和页脚等。
我不需要每个页面的自定义视图,我只想要简单的模板渲染。我的项目有/ templates文件夹,但是对于每个页面我需要添加一个url模式settings.py
url(r'index.html',TemplateView.as_view(template_name='index.html')),
有没有办法简单地将/ templates的全部内容映射到网址?也许有比这更好的方法。我可以看到如何使用媒体和静态文件夹执行此操作,但他们不提供模板渲染
答案 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()),
)