Python 网站开发(四)Django 模板小结接着上一篇 Python 网站开发(三)Django 模板的使用,本篇对 Django 模板做进一步的学习。我们会对 Django 模板中常用的技术进行一下小结,好为将来 Python 网站的实际开发做好准备。 1.Django 模板块标签(blog tag)如我们在 Python 网站开发(三)Django 模板的使用中使用的 for 标签,它就是一个块标签,语法和 Python 中一致,只不过在 Django 模板中是包含在 {% %}中,如下: {% for m in model %} <article> <h2>{{ m.title }}</h2> <p>{{ m.addtime }}</p> <p>{{ m.content }}</p> </article> {% endfor %} 类似的模板标签还有几个,以后我们可能会使用到。 2.Django 模板的继承如在上一篇文章中,我们新建了"base.html"公用模板,使用下边的语句即可完成模板的继承: {% extends "base.html" %} 3.Django 模板过滤器我们可以使用 Django 模板过滤器来格式化的显示数据,Django 模板过滤器大家可以参考 Django 模板过滤器列表。只需使用一个竖杠("|"),如使用 date 可将时间格式转换为"yyyy-MM-dd"的形式: <span>{{ m.addtime|date:"Y-m-d" }}</span> Django 模板日期格式大家可以参考 Django 模板日期格式表。使用 truncatewords 可截取指定个数的单词,如下边的代码截取显示前三个单词,我们第一篇文章标题会显示为 "First python blog ...". {{ m.title|truncatewords:"3" }} 使用时一定要注意空格,如在 "|" 左右加上空格的话就会报错。 4.Django 数据排序虽然,排序本身不属于模板的任务,但它也是数据的表现形式,所以我们总结到这里。我们可以在视图(views.py)读取数据时指定排序方式,如下: # 按id升序排列 articles=article.objects.all().order_by("id") # 按id降序排列 articles=article.objects.all().order_by("-id") 当然,好的做法是在 model (models.py) 中修改,方法是定义一个 Meta 嵌套类,然后指定 ordering 属性,如下: class article(models.Model): title=models.CharField(max_length=50) content=models.CharField(max_length=4000) addtime=models.DateTimeField() class Meta: ordering=('-id',) ('-id',)是一个无组,请注意逗号,我们在 urls.py 中已经使用过。在 models.py 中设置后,如果再在视图设置的话,会以视图中的为准。这里再次提醒下缩进,Python 中控制代码逻辑就是靠缩进来控制的。如果缩进不正确,就会出现错误。 5.Django 模板中文乱码解决可以看到,Django 模板本身为 ".html" 文件,所以出现乱码是由于文件保存格式问题。如我新建模板时喜欢用记事本,新建的文件默认为 ".ANSI" 格式从而导致 Django 模板的中文会出现乱码。解决时只需用记事本打开文件并将它保存为"UTF-8"的即可。 6.Python 文件中文乱码解决如在 Python 文件(.py)中使用中文注释等时就会出现错误,解决方法是在 .py 文件的开头加入下边的代码: #coding=utf-8 使用 Django 模板可能碰到的常见问题就是这些,将 Django 模板这块单独总结一下,希望能为我们后续文章做好铺垫。 7 顶
作者:东奎 发布时间:2011年07月21日 |
|