博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django Template
阅读量:5084 次
发布时间:2019-06-13

本文共 3156 字,大约阅读时间需要 10 分钟。

动态URL

在urls.py中以通配符来实现

urlpatterns = patterns('',    (r'^hello/$', hello),    (r'^time/$', current_datetime),    (r'^time/plus/(\d{1,2})/$', hours_ahead),)
def showNumber(request,num):#num是匹配值    try:        NUM = int(num)    except ValueError:        raise Http404()    return  HttpResponse('number is %d' %NUM)

context

#coding:utf8from  django.template import Template,Contextperson ={
'name':'eric','age':20,'sex':'man'}c = Context({
'person':person})#将字典person转换成Contextt = Template('{
{person.name}} age is {
{person.age}} he is {
{person.sex}}')print t.render(c)

forloop

  • forloop 属性统计当前循环次数
{% for item in todo_list %}    

{

{ forloop.counter }}: {
{ item }}

{% endfor %}
  • forloop.counter0 类似于 forloop.counter ,但是它是从0计数的。 第一次执行循环时这个变量会被设置为0。

  • forloop.revcounter 是表示循环中剩余项的整型变量。 在循环初次执行时 forloop.revcounter 将被设置为序列中项的总数。 最后一次循环执行中,这个变量将被置1。

  • forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。 在第一次执行循环时,该变量会被置为序列的项的个数减1。

  • forloop.first 是一个布尔值,如果该迭代是第一次执行,那么它被置为True
  • forloop.last 是一个布尔值;在最后一次执行循环时被置为True
  • forloop.parentloop 是一个指向当前循环的上一级循环的 forloop 对象的引用(在嵌套循环的情况下)。 例子在此:
{% for country in countries %}    
{% for city in country.city_list %}
{% endfor %}
Country #{
{ forloop.parentloop.counter }}
City #{
{ forloop.counter }}
{
{ city }}
{% endfor %}

ifequal

  • 如果相等显示中间代码
{% ifequal section 'sitenews' %}    

Site News

{% endifequal %}{% ifequal section "community" %}

Community

{% endifequal %}

只有模板变量,字符串,整数和小数可以作为 {% ifequal %} 标签的参数

{% ifequal variable 1 %}{% ifequal variable 1.23 %}{% ifequal variable 'foo' %}{% ifequal variable "foo" %}

多行注释

{
% comment %}This is amulti-line comment.{
% endcomment %}

过滤器

#将列表的第一个元素大写{
{ my_list|first|upper }}#显示变量的前30个词{
{ bio|truncatewords:"30" }}#格式化字符串{
{ pub_date|date:"F j, Y" }}addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。 这在处理包含JavaScript的文本时是非常有用的。

绝对路径设置

'DIRS': [os.path.join(BASE_DIR, 'templates')],import os.pathTEMPLATE_DIRS = (    os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),)# BASE_DIR 、os.path.dirname(__file__)都是获取当前文件路径

载入模板文件,Context渲染

def current_datetime(request):    now = datetime.datetime.now()    t = get_template('current_datetime.html')#获取模板文件    html = t.render(Context({
'current_date': now})) return HttpResponse(html)

include模板标签

用于减少代码重复

# mypage.html{% include "includes/nav.html" %}

{
{ title }}

# includes/nav.html

模板继承

  • base.html
    {% block title %}{% endblock %}    

My helpful timestamp site

{% block content %}{% endblock %} {% block footer %}

Thanks for visiting my site.

{% endblock %}
  • 子模板1
{% extends "base.html" %}{% block title %}The current time{% endblock %}{% block content %}

It is now {

{ current_date }}.

{% endblock %}
  • 子模板2
{% extends "base.html" %}{% block title %}Future time{% endblock %}{% block content %}

In {

{ hour_offset }} hour(s), it will be {
{ next_time }}.

{% endblock %}

转载于:https://www.cnblogs.com/icanactnow/p/7674993.html

你可能感兴趣的文章
java编写提升性能的代码
查看>>
list 容器 排序函数.xml
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
synchronized
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
Window 的引导过程
查看>>
App右上角数字
查看>>