Django - Philosophies and Limitations

Now that you’ve gotten a feel for the Django template language, we should point out some of
its intentional limitations, along with some philosophies behind why it works the way it works.
      More than any other component of Web applications, template syntax is highly subjec-
tive, and programmers’ opinions vary wildly. The fact that Python alone has dozens, if not
hundreds, of open source template-language implementations supports this point. Each was
likely created because its developer deemed all existing template languages inadequate. (In
fact, it is said to be a rite of passage for a Python developer to write his or her own template
language! If you haven’t done this yet, consider it. It’s a fun exercise.)
      With that in mind, you might be interested to know that Django doesn’t require you to
use its template language. Because Django is intended to be a full-stack Web framework that
provides all the pieces necessary for Web developers to be productive, many times it’s more
convenient to use Django’s template system than other Python template libraries, but it’s not
a strict requirement in any sense. As you’ll see in the upcoming section “Using Templates in
Views,” it’s very easy to use another template language with Django.
      Still, it’s clear we have a strong preference for the way Django’s template language works.
The template system has roots in how Web development is done at World Online and the
combined experience of Django’s creators. Here are a few of our philosophies:

 

     •     Business logic should be separated from presentation logic . Django’s developers see a
     template system as a tool that controls presentation and presentation-related logic—
     and that’s it. The template system shouldn’t support functionality that goes beyond
     this basic goal.
         For that reason, it’s impossible to call Python code directly within Django templates.
     All “programming” is fundamentally limited to the scope of what template tags can
     do. It is possible to write custom template tags that do arbitrary things, but the out-
     of-the-box Django template tags intentionally do not allow for arbitrary Python-code
     execution.
     •     Syntax should be decoupled from HTML/XML. Although Django’s template system
     is used primarily to produce HTML, it’s intended to be just as usable for non-HTML
     formats, such as plain text. Some other template languages are XML based, placing all
     template logic within XML tags or attributes, but Django deliberately avoids this limita-
     tion. Requiring valid XML for writing templates introduces a world of human mistakes
     and hard-to-understand error messages, and using an XML engine to parse templates
     incurs an unacceptable level of overhead in template processing.
     •     Designers are assumed to be comfortable with HTML code. The template system isn’t
     designed so that templates necessarily are displayed nicely in WYSIWYG editors such
     as Dreamweaver. That is too severe a limitation and wouldn’t allow the syntax to be
     as friendly as it is. Django expects template authors to be comfortable editing HTML
     directly.
     •     Designers are assumed not to be Python programmers. The template-system authors
     recognize that Web-page templates are most often written by designers, not program-
     mers, and therefore should not assume Python knowledge.
         However, the system also intends to accommodate small teams in which the templates
     are created by Python programmers. It offers a way to extend the system’s syntax by
     writing raw Python code. (More on this in Chapter 9.)
     •     The goal is not to invent a programming language. The goal is to offer just as much
     programming-esque functionality, such as branching and looping, that is essential for
     making presentation-related decisions.

 

 

很有意思,每一样事务都有它本身的规则。遵循大自然的规律,但是只要是人创造出来的东西,肯定是含有主观的意识.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值