template不是django中的内容,而是在python中的。只是在django的松偶合的思想正好用到了这个东西。即写好界面的模板,然后再写好业务逻辑,最后组合即可,这样就将界面与逻辑分开来了。
下面通过一个小例子来看看如何写:
先写一个模板,这里用的pycharm IDE,在项目下自带的templates目录内新建一个模板文件,命名为t1:
<html>
<body>
It is now {{ current_date }}.
</body>
</html>
大致说一下,带有{{}}的定义的是变量,他们后面会被替换为逻辑里面的变量,其余的代码是固定的。
再写urlconf:
from django.conf.urls.defaults import *
from FirstDjango.view import currenttime
urlpatterns = patterns('',
('^time/$',currenttime)
)
新建一个view.py:
from django.http import HttpResponse
from django.template import Context, Template
from django.template.loader import get_template
import datetime
def currenttime(request):
now=datetime.datetime.now()
t=get_template('t1')
c=Context({'current_date':now})
html=t._render(c)
return HttpResponse(html)
首先通过datetime得到当前的时间,然后创建一个模板,这里是从其他地方加载而来的,
get_template函数的参数就是要加载的文件的文件名。那么从哪里加载呢?这个要看settings.py文件,里面的TEMPLATE_DIRS变量就是模板文件的加载目录。这个需要根据项目的需要自行设定。我们这里指定加载项目目录下的templates文件夹里的内容。那么就要这样设置:
TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), '..', 'templates').replace('\\','/'),)
__file__变量可以得到当前文件的文件名称,dirname函数可以得到指定文件的路径,也就是............/FirstSql/FirstSql下面,而templates文件夹是在第一层的FirstSql下,因此要加一个".."编导上一级目录,再加上templates就好了。最后把\\换/即可。
至此就可以运行了!