Django初识Django 是由美国的一个 Web 开发团队编写。它诞生于 2003 LJWorld.com、Lawr

  • 2025-10-09 17:13:47

初始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、重量级的框架,提供了丰富的功能组件,让开发变得简单,便捷

2、完善的开发文档,提供给了开发人员很好的解决方案

3、开发效率快

缺点

1、开发不够灵活,不够自由,不能够完成高度定制化的开发

2、执行速度慢。

Django的官网: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 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、变量

语法: {{ 变量名 }}

支持类型: 字符串,整形,列表,字典,元祖

变量是字典类型,可以以键取值

变量是有序的序列类型,变量可以通过索引进行取值

变量是对象,可以调用没有参数的方法

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在一起使用

{% for person in person_list %}

{% endfor %}

编号 用户名 年龄
{{ person.id }} {{ person.name }} {{ person.age }}

(4)for ... empty 循环

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

(5)autoescape

DTL模板中默认已经开启了自动转义,会将那些特殊字符串进行转义,比如会将“<”转义成<会将“>”转移成“>”,使用DTL的自动转义,可以使网站不容易出现XSS漏洞。

如果变量是可信任的,那么可以使用“autoescape”标签来关掉 自动转义

{% autoescape on%}

{{ msg }}

{% endautoescape %}


{% 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")

]

# 图片路径

方式二:

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

{% load static %}

toudianping.jpg

模板继承和包含

1、继承

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

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

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

2、包含

可以将常用的页面内容如导航条,页尾信息等不变的组件可以保存在单独的文件中,然后在需要使用的地方按如下语法导入即可。

{% include 'navbar.html' %}

友情链接
Copyright © 2022 极限竞技游戏活动前线 All Rights Reserved.