0

我正在研究 edx 平台的 lms 服务。它使用python 2.7 + django。一般来说,使用python模板的语法如下:

{% extends "base_generic.html" %}
{% block title %}{{ section.title }}{% endblock %}

{% block content %}
<h1>{{ section.title }}</h1>

{% for story in story_list %}
<h2>
  <a href="{{ story.get_absolute_url }}">
    {{ story.headline|upper }}
  </a>
</h2>
<p>{{ story.tease|truncatewords:"100" }}</p>
{% endfor %}
{% endblock %}

但 edx-platform 使用如下:

<%namespace name='static' file='static_content.html'/>
<%!
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from courseware.courses import course_image_url, get_course_about_section
%>
<%page args="course" />
<article id="${course.id.to_deprecated_string()}" class="course">
  %if course.is_newish:
    <span class="status">${_("New")}</span>
  %endif
  <a href="${reverse('about_course', args=[course.id.to_deprecated_string()])}">
  <div class="inner-wrapper">

我不明白语法。也许单行是 "%" ,多行是 "<% %>" 这是 python 语法?如何使用该语法?

4

1 回答 1

4

edx-platform 使用的是 mako 模板语言。

Mako 是一个用 Python 编写的模板库。它提供了一种熟悉的非 XML 语法,可编译成 Python 模块以获得最佳性能。Mako 的语法和 API 借鉴了许多其他人的最佳想法,包括 Django 模板、Cheetah、Myghty 和 Genshi。从概念上讲,Mako 是一种嵌入式 Python(即 Python 服务器页面)语言,它改进了组件化布局和继承的熟悉概念,以产生最直接和灵活的模型之一,同时还与 Python 调用和范围语义保持密切联系。

请参阅http://www.makotemplates.org/docs/上的 Mako 文档

于 2014-08-19T07:09:20.883 回答