首页    新闻    小组    威客    人才    下载    博客    代码贴    在线编程    论坛
把Django的模板改成rails的风格

静夜思2012-05-30 14:16 发布

Django的模板用{%  %}和{{ }}标记标签和变量,如下这种格式:

    <div class="r">
      {% if perms.news.add_article %}
        <a href='/news/add/'>添加新闻</a> |
      {% endif %}
      {% if perms.manager.view_admin and perms.news.delete_comment %}
        <a href='/manager/news/commentlist/'>管理评论</a> |
      {% endif %}
      {% if user.is_authenticated %}
        <a href='/user/{{ user.id }}/'>{{ user.username }}</a> |
        <a href='/user/logout/'>退出</a>
      {% else %}
        <a href='/user/register/'>注册</a> |
        <a href='/user/login/'>登录</a>
      {% endif %}
    </div>

但是我更喜欢ruby on rails的模板风格(类似asp),也可能是我以前写惯了asp的缘故:

    <div class="r">
      <% if perms.news.add_article %>
        <a href='/news/add/'>添加新闻</a> |
      <% endif %>
      <% if perms.manager.view_admin and perms.news.delete_comment %>
        <a href='/manager/news/commentlist/'>管理评论</a> |
      <% endif %>
      <% if user.is_authenticated %>
        <a href='/user/<%= user.id %>/'><%= user.username %></a> |
        <a href='/user/logout/'>退出</a>
      <% else %>
        <a href='/user/register/'>注册</a> |
        <a href='/user/login/'>登录</a>
      <% endif %>
    </div>

感觉这样看上去更舒服,花括号{}夹杂在尖括号<>里面很难看,如果想在Django模板中使用这种格式的模板怎么办?只要做稍微的修改就能实现:

1、跳到你Django安装的路径,大约在/usr/local/lib/python2.6/dist-packages/django/

    vi template/base.py

2、修改
BLOCK_TAG_START = '{%'
BLOCK_TAG_END = '%}'
VARIABLE_TAG_START = '{{'
VARIABLE_TAG_END = '}}'
为:
BLOCK_TAG_START = '<%'
BLOCK_TAG_END = '%>'
VARIABLE_TAG_START = '<%='
VARIABLE_TAG_END = '%>'

修改:
token = Token(TOKEN_VAR, token_string[2:-2].strip())
为:
token = Token(TOKEN_VAR, token_string[3:-2].strip())
(即修改2为3)

OK,以后就可以以rails的风格写Django模板了
 
 
最新话题:

这个小组眼看着要进入第7个年头

各位大神帮我看看这一段有什么问题...

django中获取当前时间不要用datetim...

django在开发环境下static、media两...

从今天开始,放弃使用coffeescript

晒一下开发中的微博,使用Django开...

Django的orm里,True是用1代替存储...

把Django的模板改成rails的风格