我使用SHPAML(HAML为Python)Django的,然而,我所面临的问题转换SHPAML - > HTML由于重写某些块时的空白的问题,下面有一个例子:如何保留模板块中的空白?
在skeleton.shpaml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{{ title }}</title>
{% comment %}
<link rel="shortcut icon" href="/static/images/favicon.ico" type="image/x-icon"/>
{% endcomment %}
{% if css_list %}
{% for css in css_list %}
<link type="text/css" rel="stylesheet" href="{{css_relative}}{{ css }}">
{% endfor %}
{% endif %}
{% if js_list %}
{% for js in js_list %}
<script type="text/javascript" src="{{js_relative}}{{ js }}">
</script>
{% endfor %}
{% endif %}
{% if no_cache %}
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
{% endif %}
</head>
body
#nonFooter
#content
{% block header %} {% endblock %}
#maincontent
{% block content %} {% endblock %}
#footer
</html>
在index.shpaml:
{% extends "includes/skeleton.shpaml" %}
{% block content %}
asd
.test
.test2 | meh
{% endblock %}
最后,我的输出是这样的:
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Home | Zineified</title>
<link type="text/css" rel="stylesheet" href="/media/css/base.css">
<script type="text/javascript" src="/media/js/jquery-1.3.2.min.js">
</script>
<script type="text/javascript" src="/media/js/jquery.form.js">
</script>
<script type="text/javascript" src="/media/js/base.js">
</script>
</head>
body
#nonFooter
#content
#maincontent
asd
.test
.test2 | meh
#footer
</html>
正如您所看到的,空格不会保留在块中。 index.shpaml中的下一行直接进入skeleton.shpaml中的下一行。我怎样才能防止这种情况,并通过扩展模板保留空白?
这不会这意味着模板扩展框架不包含SHPAML代码,并且SHPAML代码需要明显的空白(SHPAML本质上是pythonic HTML,就像HAML一样) – nubela 2010-01-04 21:55:44
据我了解,它将把shpaml标签当作明文处理,并将保留所有的格式化。只有html标记会受到影响 – 2010-01-04 22:04:15
你是对的,它仍然将shpaml标签当作明文处理,但是它并不能解决覆盖块内容时保留空白的问题t在skeleton.shpaml中。我只是试了一下。 – nubela 2010-01-04 22:09:40