Django 模版 各种实用方法
来源:互联网 发布:lol for mac 编辑:程序博客网 时间:2024/06/05 09:52
一般的变量之类的用 {{ }}(变量),功能类的,比如循环,条件判断是用 {% %}
1.接受显示视图函数传过来的字符串
# -*- coding: utf-8 -*-from django.shortcuts import renderdef home(request): string = u"我在自强学堂学习Django,用它来建网站" return render(request, 'home.html', {'string': string})
前端用{{ string }}去接受
2.接受显示视图函数传过来的列表
def home(request): TutorialList = ["HTML", "CSS", "jQuery", "Python", "Django"] return render(request, 'home.html', {'TutorialList': TutorialList})```前端用for迭代取出内容教程列表:<div class="se-preview-section-delimiter"></div>
{% for i in TutorialList %}
{{ i }}
{% endfor %}
“`
{% for i in TutorialList %}{{ i }}{% endfor %}
3.接受显示视图函数传过来的字典
def home(request): info_dict = {'site': u'自强学堂', 'content': u'各种IT技术教程'} return render(request, 'home.html', {'info_dict': info_dict})
在模板中取字典的键是用点info_dict.site,而不是Python中的 info_dict[‘site’]:
站点{{ info_dict.site }} 内容:{{ info_dict.content }}
还可以这样遍历字典:
{% for key, value in info_dict.items %}
{{ key }}:{{ value }}
{% endfor %}
4.在模板进行 条件判断和 for 循环的详细操作
发个list给前端
def home(request): List = map(str, range(100))# 一个长度为100的 List return render(request, 'home.html', {'List': List})
前端用逗号把取出来的元素分隔开
{% for item in List %} {{ item }},{% endfor %}
最后还多个逗号,咱们要通过判断遍历到最后了把它去掉,咋搞?用forloop.last变量判断下,如果为真就到最后一个了
{% for item in List %} {{item}}{% if not forloop.last %},{% endif %}{% endif %}
在for循环中还有很多有用的东西
变量 描述
forloop.counter 索引从 1 开始算
forloop.counter0 索引从 0 开始算
forloop.revcounter 索引从最大长度到 1
forloop.revcounter0 索引从最大长度到 0
forloop.first 当遍历的元素为第一项时为真
forloop.last 当遍历的元素为最后一项时为真
forloop.parentloop 用在嵌套的 for 循环中,获取上一层 for 循环的 forloop
当列表中可能为空值的时候用 for empty
<ul>{% for athlete in athlete_list %} <li>{{ athlete.name }}</li>{% empty %} <li>抱歉,列表为空</>{% endfor %}</ul>
5.模板上得到视图对应的网址
用{% url ‘add’ 4 5 %}
# views.pydef add(request, a, b): c = int(a) + int(b) return HttpResponse(str(c))# urls.pyurlpatterns = patterns('', url(r'^add/(\d+)/(\d+)/$', 'app.views.add', name='add'),)# template html{% url 'add' 4 5 %}
还可以使用 as 语句将内容取别名(相当于定义一个变量),多次使用(但视图名称到网址转换只进行了一次)
{% url ‘some-url-name’ arg arg2 as the_url %}
链接到: {{ the_url }}
6.模板中的逻辑操作
==, !=, >=, <=, >, < 这些比较都可以在模板中使用,
and, or, not, in, not in 也可以在模板中使用,但是比较符号前后必须有至少一个空格
{% if var >= 90 %}
{% if num <= 100 and num >= 0 %}
7.模板中 获取当前网址,当前用户等
如果不是在 views.py 中用的 render 函数,是 render_to_response 的话,需要将 request 加入到 上下文渲染器
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ ... 'django.template.context_processors.request', ... ], }, },]
然后再加上 django.core.context_processors.request
TEMPLATE_CONTEXT_PROCESSORS = ( ... "django.core.context_processors.request", ...)
然后在 模板中我们就可以用 request 了。一般情况下,推荐用 render 而不是用 render_to_response
获取当前用户
{{ request.user }}判断登陆没登陆{% if request.user.is_authenticated %} {{ request.user.username }},您好!{% else %} 还没登陆呢啥也看不了{% endif %}
获取当前网址
{{ request.path }}
获取当前的GET参数
{{ request.GET.urlencode }}
合并到一起用的一个例子
当前网址加参数 delete
比如我们可以判断 delete 参数是不是 1 来删除当前的页面内容。
推荐学习: http://code.ziqiangxuetang.com/django/django-template2.html
- Django 模版 各种实用方法
- Django模版中for循环的方法
- Django-模版
- jquery各种实用小方法
- Django模版系统中方法调用的注意事项
- 在Python的Django框架中加载模版的方法
- django--模版系统-过滤器的自定义,两种加载模版(template)的方法
- Django 模版小记
- django模版路径问题
- django 模版语言
- DJANGO 1.8模版配置
- django 模版关闭转义
- django的模版
- 好坑好坑,django模版好坑有木有?
- django 模版编码问题
- django自定义模版函数
- 【扯淡】各种模版
- ACM各种模版整理
- 大话数据结构 code 第三章 03静态链表_StaticLinkList
- UNIQUE 约束
- 懒癌必备-dplyr和data.table让你的数据分析事半功倍
- 图片缩放
- 学习vue
- Django 模版 各种实用方法
- POJ 2418 Hardwood Species
- 图处理:rigraph实现边介数社区发现算法(GN)
- 未能正确加载“ProviderPackage”包。
- 想要自己运营astgo网络电话系统,必须要掌握以下基本技术
- 大话数据结构 code 第四章 01顺序栈_Stack
- 一道笔试题引发的一系列js类型转换的坑
- java中ThreadLocal类的使用
- spring整合hibernate错误总结