请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

嵌入式天空

 找回密码
 我要注册

扫一扫,访问微社区

最近看过此主题的会员

查看: 1403|回复: 0

08Django模板标签实例

[复制链接]

344

主题

468

帖子

3963

积分

管理员

我是一个程序员

Rank: 9Rank: 9Rank: 9

积分
3963
发表于 2017-9-13 11:56:42 | 显示全部楼层 |阅读模式
例子一、显示简单字符串
lzy@embsky:/home/zyli/test/python/django/mbProject$ python3 manage.py startapp two
lzy@embsky:/home/zyli/test/python/django/mbProject$ mkdir two/templates
lzy@embsky:/home/zyli/test/python/django/mbProject$ touch two/templates/twoIndex.html
lzy@embsky:/home/zyli/test/python/django/mbProject$ vim two/templates/twoIndex.html
<h1>{{a}}</h1>
<b1>{{b}}</b1>
<b1>{{c}}</b1>
lzy@embsky:/home/zyli/test/python/django/mbProject$ vim two/views.py
from django.shortcuts import render
def indexFun(request) :
        d = {'a':'Django', 'b':123456, 'c':'大家一起学Django'}
        #最后一个参数是一个字典,字典中的key对应模板文件中的变量
        return render(request, 'twoIndex.html', d)
lzy@embsky:/home/zyli/test/python/django/mbProject$ vim mbProject/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'one',
    'two',
]
lzy@embsky:/home/zyli/test/python/django/mbProject$ vim mbProject/urls.py
from django.conf.urls import url
from django.contrib import admin
from one.views import index
from two.views import indexFun
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', index),
    url(r'^1$', indexFun),
]
测试:
a.png

注意:以下例子均在上一个例子的基础上扩展
例子二:for标签使用
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim templates/twoIndex.html
添加:
<br>
{% for i in listTest %}
{{   i   }}
{% endfor %}
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim views.py
添加:
        l = ['Python', 'Django', 'Java', 'Apache']
        d['listTest'] = l
测试:
b.png

例子三:for标签遍历字典
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim templates/twoIndex.html
添加:
<br>
{{ dicTest.key1 }} {{dicTest.key2}}
<br>
{% for key,value in dicTest.items %}
{{key}}:{{value}}
{% endfor %}
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim views.py
添加:
        dicTest = {'key1':'嵌入式', 'key2':'Python全栈'}
        d['dicTest'] = dicTest
测试:
c.png

例子四:for循环遍历的序列为空
在模板文件的for循环中加入以下内容可以判断序列是否为空
{% empty %}
字典后者列表为空....
测试:
d.png

例子五:if elif else标签
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim templates/twoIndex.html
添加:
<br>
{% for i in numList %}
    {% if i < 10 or i > 50 %}
        {{i}}
    {% elif i == 30 %}
        此处是三十
    {% else %}
        A        
    {% endif %}
{% endfor %}
注意:此处条件判断与Python一致
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim views.py
添加:
    numList = range(100)
    d['numList'] = numList
测试:
e.png

例子六:模板中使用视图对应的url
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim templates/twoIndex1.html
添加:
这里是一个测试文件{{key}}
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim views.py
添加:
def indexFun1(request, a, b) :
    c = int(a) + int(b)
    d = {'key':c}
    return render(request, 'twoIndex1.html', d)
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim ../mbProject/urls.py
添加:
from two.views import indexFun1
    url(r'^test/([0-9]+)+/(\d+)$', indexFun1, name='hello'),
注意:到此为止我们已经可以在浏览器测试了
f.png
但是:这个例子我们并不满足于此,我们的目标是在一个页面中使用另外一个页面
lzy@embsky:/home/zyli/test/python/django/mbProject/two$ vim templates/twoIndex.html
添加:
<br>
{% url 'hello' 123 345 %}                             #其实'hello'就是一个变量,他的值就是url(/test),在这里其实生成一个url(/test/123/456)
{% url 'hello' 123 345 as nihao %}         #在这里其实生成一个url(/test/123/456),并赋值给变量nihao
<br>
<a href="{% url 'hello' 123 345 %}">此处是链接</a>
<a href="{{nihao}}">此处也是链接</a>
注意:该例子的亮点是在定义url(/test/x/x)的时候加了一个参数name='hello'。
相当于给url起了名字叫做hello。那么在模板中就可以直接通过hello来使用url。
如果以后把url(/test/x/x)修改了,但是不用修改模板文件,因为模板根据hello名字来替换url(类似于宏定义)。
测试:
g.png

点击链接之后:
h.png






e.png
最近很忙
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EBMSKY Inc. ( 冀ICP备17022971号-1  

GMT+8, 2019-7-23 17:36 , Processed in 0.081553 second(s), 39 queries .

Powered by Discuz! X3.2

© 2014-2018 Comsenz Inc. 【嵌入式天空】设计

快速回复 返回顶部 返回列表