python+Django框架运用(二)

Django应用 与 模板

应用就是网站中的一个独立的程序模块,在Django 中,主目录一般不处理用户的具体请求,

主目录主要做的是项目的初始化和设置,以及请求的分发。

 

创建应用

1. 创建应用命令

  ./manage.py startapp 应用名称

2. 注册应用

  创建完应用后,必须在settings.py中进行注册

  在文件中找到INSTALLED_APPS(列表)中加上注册的应用名

3.应用的结构组成

  migrations(目录)   ——> 存放数据库中间文件(日志文件)

  __init__.py      ——> 应用的初始化文件

  admin.py         ——> 应用的后台管理配置文件

  apps.py        ——> 应用的属性配置文件

  models.py       ——> 模型文件,与数据库相关

  tests.py        ——> 测试模块

  views.py       ——> 定义视图的文件

  

Django中模板–(Templates)

模板是要动态给用户呈现的网页内容,其实就是一个网页(一个前后端结合的网页)。

模板设置

模板的设置与settings.py中TEMPLATES变量(列表)相关,里面存放的字典。

BACKEND: 指定模板的搜索引擎(一般不用更改)

DIRS:指定模板的存放的目录,如果为空,Django会到应用中去搜索名为templates

  的目录,作为模板的管理目录。

  例如: DIRS = [‘index.temp’]   —-> 表示指定index应用的模板存放目录为temp

  ps: 这里一般都是为空,然后在每个应用中创建一个templates目录。

APP_DIRS:(布尔值)为True则表示,先从DIRS中指定的目录中查找模板,

  没有再搜templates目录

 

模板的加载方式

1、使用loader获取模板,通过HttpResponse进行响应


from django.shortcuts import render
from django.template import loader
def login_views(request):
  # 加载模板,login.html为模板文件
  te = loader.get_template('login.html')
  # 将模板渲染成字符串
  html = te.render()
  # HttpResponse响应给客户端
  return HttpResponse(html)

2.使用render直接加载模板并返回(推荐)

from django.shortcuts import render
def login_views(request):

  # 将模板渲染,并返回
  return render(request, 'login.html')

模板的变量

将后端的数据传递给模板,在模板中,会根据变量的值进行显示。

在Django中,允许传递给模板的数据类型,数值类型、字符串、列表、元组、字典、函数、对象

# loader 方式
def login_views(request):
    dic = {
        'user': 'laige''pwd': '123456'  
    }
    
    te = loader.get_template('login.html')
    html = te.render(dic)
    return HttpResponse(html)


# render 方式
def login_views(request):
    dic = {
        'user': 'laige''pwd': '123456'  
    }
    # 将模板渲染,并返回
    return render(request, 'login.html', dic)

# 将本地变量传入 -- locals()
def login_views(request):
    dic = {
        'user': 'laige''pwd': '123456'  
    }
    # 将模板渲染,并返回
    return render(request, 'login.html', locals())

模板的标签

标签可以将服务器中的一些功能嵌入到模板中

基本语法:{%  标签内容  %}

常用的一些标签:

<!--  for 循环  
    允许使用 for 提供的内置变量 - forloop
    1、forloop.counter 
    记录当前循环的次数,从1开始
    2、forloop.first
    是否是第一次循环(第一项)
    3、forloop.last
    是否是最后一次循环(最后一项)
-->
{% for 变量 in 迭代对象 %}
    <h3>hello  hello !</h3>
{% endfor %}



<!--  if 条件  
    ps: 注意条件中and和or不能同时出现
-->
{% if 条件 %}
    <p> 满足条件,执行!</p>
{% elif 条件1 %}
    <p> 满足条件1,执行!</p>
{% else %}
    <p>不满足以上条件,执行!</p>
{% endif %}

ps:这里只是举了两个常用的例子,

具体更多的标签内容可以查看文档:https://docs.djangoproject.com/en/2.0/ref/templates/builtins/

模板的过滤器

过滤器主要是在显示变量的数据之前,对数据进行筛选和改变

基本语法:{{ 变量|过滤器:参数 }}

几个简单的过滤器:

<!-- 将value变为大写字符  -->
{{value|upper}}

<!-- 将value变为小写字符  -->
{{value|lower}}

<!-- 将num累加到value之后 -->
{{value|add:num}}

<!-- 将value四舍五入到n位小数 -->
{{value|floatformat:n}}

<!-- 将字符串截取到n位(包含...) -->
{{value|truncatechars:n}}

ps:具体更多的过滤器内容可以查看文档:https://docs.djangoproject.com/en/2.0/ref/templates/builtins/

 

未完待续……

posted on 2018-07-16 20:58 一如莱戈、 阅读() 评论() 编辑 收藏

版权声明:本文为hxgoto原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hxgoto/p/9320231.html