首页 > 其他 > 详细

Django初识

时间:2020-06-17 20:42:17      阅读:51      评论:0      收藏:0      [点我收藏+]

初始Django

一、Django介绍

  • Django历史

    Django 是由美国的一个 Web 开发团队编写。它诞生于 2003 年秋天,那时
    Web团队负责制作和维护本地的几个新闻网站,那些网站(包括 LJWorld.com、Lawrence.com 和 KUsports.com)不断要求增加功能,而且整个应用要在紧张的周期内快速开发出来,通常只有几天或几小时。因此,只能开发一个节省时间的 Web 开发框架,这样他们才能在极短的截止日期之前构建出易于维护的应用。经过一段时间的开发后,那个框架已经足够驱动世界上最大的在线网站了。2005 年夏天,团队决定把框架作为开源软件发布出来。他们在 2005 年 7 月发布了那个框架,将其命名为 Django。
    Django是一个开放源代码的Web应用框架,由Python写成。功能比较齐全。现在市场份额50%左右,其他Web框架还有Flask,Tornado。

二、Django特性

1、优点
(1)重量级的框架,提供了丰富的功能组件,让开发变得简单,便捷。
(2)完善的开发文档,提供给了开发人员很好的解决方案。
(3)开发效率快。

2、缺点
(1)开发不够灵活,不够自由,不能够完成高度定制化的开发。
(2)执行速度慢。

Django的官网:https://docs.djangoproject.com/en/2.2/

三、Django安装

1、django版本号

统一使用2.2.1 版本。

2、为什么使用这个版本?
①不使用最新的版本(不稳定)
②选择使用稳定的版本
③LTS 长版本支持

3、Django安装
(1)anaconda虚拟环境操作
conda -V : 查看anaconda 版本
创建虚拟环境
conda create -n 虚拟环境的名字 python=版本号
激活虚拟环境:activate 虚拟环境的名字
退出虚拟环境 :deactivate
查看有哪些虚拟环境:conda env list

(2)安装Django
创建虚拟环境 conda create -n DjangoPath python=3.7
激活虚拟环境 activate DjangoPath
安装Django pip install django==2.2.1

使用国内源)pip install django==2.2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

  • 创建项目

    1、创建过程

    (1)首先创建一个目录
    (2)进入目录,打开终端(命令行)
    (3)激活虚拟环境 activate DjangoPath
    (4)创建工程 django-admin startproject Demo(工程名字)

    2、Django项目的启动
    (1)进入Django项目 manage.py 同级目录
    (2)激活虚拟环境
    (3)启动项目
    ①、python manage.py runserver

    ②、python manage.py runserver 9000 修改端口
    ③、python manage.py runserver 0.0.0.0:9000 所有同一个局域网中的用户都能访问

    0.0.0.0 代表本机的所有ip地址,如果一个服务有多个IP地址(192.168.1.2和10.1.1.12),那么我们如果设置的监听地址是0.0.0.0那么我们无论是通过IP 192.168.1.2还是10.1.1.12 都是可以访问该服务的。
    127.0.0.1是回环地址,当我们在服务器搭建了一个Web服务器的时候如果我们监听的端口时127.0.0.1:端口号 的 时候,那么这个Web服务器只可以在服务器本地访问了,在别的地方进行访问是不行的。
    前提:
    a.将settings.py中的ALLOWED_HOSTS = [‘‘] 添加 “
    b.在同一个局域网中

    3、django原理

    1、127.0.0.1:8000找到服务器
    2、请求的路由是/laowang/
    3、在django代码中找到ROOT_URLCONF,找到总路由urls.py
    4、在urls.py逐个匹配,匹配成功后找到视图函数
    5、显示视图函数的响应内容

  • django路由

    基本格式:
    path(“字符串”,要执行任务的视图)
    re_path(“正则表达式”,要执行任务的视图)

四、正则表达式

正则: 是一种字符串的处理方式,用于字符串匹配的
字符串的匹配分为两种:
1、内容匹配:
例如:Python中的re模块,JS中的匹配
通过要匹配的内容的类型,长度进行匹配的
2、结构匹配:
xpath 获取到内容的某个标签进行匹配
通过获取内容在这个文档中的结构,进行匹配

字符 描述
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结尾位置
. 匹配除换行符 \n 之外的任何单字符
\d 匹配一个数字字符。等价于 [0-9]
\D 匹配一个非数字字符。等价于 [ ^0-9 ]
\w 匹配包括下划线的任何单词字符。等价于‘[A-Za-z0-9_]
\W 匹配任何非单词字符。等价于 [ ^A-Za-z0-9_ ]
[xyz] 字符集合 匹配所包含的任意一个字符。例如, ‘[abc]‘ 可以匹配 "plain" 中的 ‘a‘
() 标记一个子表达式的开始和结束位置 子表达式可以获取供以后使用
| 指明两项之间的一个选择
* 匹配前面的子表达式零次或多次
+ 匹配前面的子表达式一次或多次
? 匹配前面的子表达式零次或一次
{n} n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}‘ 不能匹配 "Bob" 中的 ‘o‘,但是能匹配 "food" 中的两个 o。

五、django路由正则匹配

re_path(r‘^\w/$‘, views.zf) # \w 匹配任意一个字母数字下划线
re_path(r‘^\w+/$‘, views.zf) # + 表示匹配前面的表达式一次或者多次 例如 fengtai
re_path(r‘^\d/$‘, views.blog) , # \d 匹配任意数字
re_path(r‘^\d{4}/$‘, views.blog) # {4}固定位数

  • 分组匹配

    作用:通过分组匹配将url路径部分内容,传递到视图函数中
    格式:通过()方式, 将匹配到的内容传递给视图函数的形参

  • 分组命名匹配

    作用:和分组匹配作用相同,但是更加直观。
    格式:(?P<名称>正则表达式)

六、django模板

  • 模板加载

    1、认识BASE_DIR(项目根目录)

    2、在setting.py中的TEMPLATES 加上 ‘DIRS‘:[os.path.join(BASE_DIR,"templates")]

    3、创建templates目录
    在项目路径下创建一个文件夹一般叫templates,与manage.py同路径下

  • 模板语法

    Django自带模板渲染的规则,分为三种。变量、标签、过滤器。
    1、变量
    语法: {{ 变量名 }}

    支持类型: 字符串,整形,列表,字典,元祖
    变量是字典类型,可以以键取值
    (2)变量是有序的序列类型,变量可以通过索引进行取值
    (3)变量是对象,可以调用没有参数的方法
    locals() 会将所有的局部变量作为字典返回

    2、标签
    语法: {% %} 。具有某种语法的逻辑

    (1)if结构的使用

    {% if age > 18 %}
        已经成年
    {% elif age == 18 %}
        正好成年
    {% else %}
        未成年
    {% endif %}
    

    (2)ifequal 的使用

    {% ifequal age 18 %}
        18岁真好
    {% else %}
        不等于18
    {% endifequal %}
    

    (3)for循环

    forloop 是一个Django模板提供的一个变量,用于记录循环的次数,常和if在一起使用

    <table width="400px" border="1">
        <tr>
            <td>编号</td>
            <td>用户名</td>
            <td>年龄</td>
        </tr>
        {% for person in person_list %}
        <tr>
                <td>{{ person.id }}</td>
                <td>{{ person.name }}</td>
                <td>{{ person.age }}</td>
            {% endfor %}
        </tr>
    </table>
    

    (4)for ... empty 循环

    如果变量名不存在或者内容为空的时候显示{%empty%}中的内容,否则不执行

    (5)autoescape
    DTL模板中默认已经开启了自动转义,会将那些特殊字符串进行转义,比如会将“<”转义成<会将“>”转移成“>”,使用DTL的自动转义,可以使网站不容易出现XSS漏洞。
    如果变量是可信任的,那么可以使用“autoescape”标签来关掉 自动转义

    {% autoescape on%}
        {{ msg }}
    {% endautoescape %}
    <hr>
    {% autoescape off%}
        {{ msg }}
    {% endautoescape %}
    
  • 过滤器

    3、过滤器
    作用:将视图传的值进行二次处理
    语法: {{ name | 过滤器方法:传值}}
    | 过滤器,将左边语句的值,作为参数传递到后面的语句
    过滤器的方法即 Python定义的方法
    Django提供了很多过滤器的方法,但是为了完成特定的操作内容,需要自定义过滤器

    过滤器 作用 用法
    upper 大写 {{ user_name | upper }}
    lower 小写 {{ user_name | lower }}
    safe 执行原本代码 {{ js | safe }}

    safe过滤器: Django出于安全的角度考虑,会将视图传递的JS或者HTML的内容进行转义,使用safe将指定的内容转为安全的,执行本来的含义

  • 静态文件处理

    静态文件:img,js,css

    方式一:

    1、创建static目录

    2、配置:在setting.py加上

    # 静态文件路由url
    STATIC_URL = ‘/static/‘
    
    # 静态文件位置
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR,"static")
    ]
    
    # 图片路径
    <img src="/static/img/a8e2bb2ffe19cdf090fa586ae4462ee3.jpg" alt="">
    

    方式二:

    在html头部写上{% load static %}

    {% load static %}
    
    <img src="{% static ‘img/toudianping.jpg‘ %}" alt="toudianping.jpg">
    
  • 模板继承和包含

    1、继承

    当我们浏览一个网站的时候发现里面的网页大部分都是相同的。这时候我们为了去除代码的冗余,可以使用继承

    (1)、定义父模板,在父模板中使用block

    (2)、定义子模板,继承父模板

    2、包含
    可以将常用的页面内容如导航条,页尾信息等不变的组件可以保存在单独的文件中,然后在需要使用的地方按如下语法导入即可。
    {% include ‘navbar.html‘ %}

Django初识

原文:https://www.cnblogs.com/markshui/p/13154579.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!