Django mako 的使用
6.6 mako 的使用
- 安装 mako
pip install mako
- 创建子应用 makos
- python .\manage.py startapp makos
- 创建 base_render.py 文件
- python .\manage.py startapp makos
from django.http import HttpResponse
from django.template import RequestContext
from django.template.context import Context
from mako.lookup import TemplateLookup
from django.conf import settings
def render_to_response(request, template, data=None):
context_instance = RequestContext(request)
path = settings.TEMPLATES[0]['DIRS'][0]
lookup = TemplateLookup(
directories=[path],
output_encoding='utf-8',
input_encoding='utf-8'
)
mako_template = lookup.get_template(template)
if not data:
data = {}
if context_instance:
context_instance.update(data)
else:
context_instance = Context(data)
result = {}
for d in context_instance:
result.update(d)
result['csrf_token'] = '<input type="hidden" name="csrfmiddlewaretoken" value="{}"/>'.format(request.META.get('CSRF_COOKIE', ''))
return HttpResponse(mako_template.render(**result))
- views.py
from django.views import View
from django.shortcuts import render
from .base_render import render_to_response # 导入我们创建的 render_to_response
# Create your views here.
class Makos(View):
def get(self, request):
data = {'name': '小钟', 'age': 21}
return render_to_response(request, 'makos.html', data=data)
- urls.py
from django.urls import path
from .views import Makos
urlpatterns = [
path('makos/', Makos.as_view()),
]
- templates
- makos.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<br>
姓名: ${name} <br>
年龄: ${age}
<br>
<%!
from django.conf import settings
%>
获取模板路径: ${settings.TEMPLATES[0]['DIRS'][0]}
</body>
</html>