IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django入门使用篇 -> 正文阅读

[Python知识库]Django入门使用篇

1. Django的框架模式 - MTV

????????M: Model层 模型层,负责数据库的建模以及CRUD操作

????????T: Templates层 模板层,用于处理用户显示的内容,如HTML

????????V: Views层 视图层, 处理与用户交互的部分操作,从模型中提取数据

? ? ? ? MVC:?Model(同M) Views(同T) Controllers(处理与用户交互的部分内容,从模型中获取数据,再交给视图层,再显示给用户

2. Django的使用

1. Django的介绍

????????网站: https://www.djangoproject.com

2. Django的安装

????????1. 在线安装

????????????sudo pip3 install django

????????2. 离线安装

????????????1. 解压 tar -xvf Django-*tar.gz

????????????2. 安装 sudo python3 setup.py install

3. 使用django

????????1. 创建django项目

????????????django-admin startproject 项目名

????????2. 启动服务,用于访问

????????????使用manage.py 文件 启动服务

????????????python3 manage.py runserver

????????3. 访问网站

????????????启动服务成功后,在浏览器中,通过一下地址访问127.0.0.1:8000

3. Django项目结构介绍

1. manage.py

????????负责执行django中各项操作文件,如: 启动服务、创建管理员、创建应用、数据库的同步操作

2. 主目录(名称与项目名称相同)

  • __init__.py

?????????项目初始化文件,每当服务器启动的时候,都会自动执行

  • urls.py

????????项目的基础url(路由)配置文件

  • wsgi

????????????应用服务器配置文件

  • settings.py

????????项目的主设置文件如下

????????????1. BASE_DIR 获取当前项目的根目录路径

????????????2. DEBUG: 调试模式

????????????????开发过程:推荐使用True

????????????????上线运行:推荐使用False

????????????3. ALLOWED_HOSTS

????????????????设置允许访问本项目的地址列表

????????????????如果不设置的话,只有本机能访问

????????????????推荐写'*',表示任何地址都允许访问该项目(局域网)

????????????????运行服务器得用0.0.0.0:端口号

????????????4. INSTALLED_APPS

????????????????指定已安装的应用,如果有自定义应用的话,需要在此位置进行注册

????????????5. MIDDLEWARE

????????????????指定注册的中间件

????????????6. ROOT_URLCONF

????????????????指定项目的基础路由配置文件

????????????7. TEMPLATES : 指定模板的信息

????????????8. DATABASES: 指定数据库的信息

??????????9. LANGUAGE_CODE: 指定当前网站的语言,如果要使用中文则可以修改为 zh-Hans

????????????10. TIME_ZONE 指定时区,如果指定中国时区,则可以修改为 Asia/Shanghai

  • urls.py

?????????默认是在主目录中,主路由配置文件,会包含最基本的地址映射。每个请求到达之后,都会由由url.py的URL_PATTERNS列表的url进行匹配url()函数匹配之后,可能将请求转交给其他的urls.py或视图(views)去处理

????????url函数的语法:?url(regex,views,kwargs=None,name=None)

????????????????regex:正则表达式,匹配请求的url

????????????????views:视图处理函数或其他的urls.py

????????????????kwargs:字典,用来向views传参,没有参数则可以省略

????????????????name:字符串,给url()起别名,主要在模板中使用

4. Django应用

  • 什么是应用

????????应用就是网站中一个独立程序模块

  • 在settings.py中进行注册

????????在INSTALLED_APPS中进行注册:

????????????????NSTALLED_APPS = [

????????????????????????'django.contrib.admin',

????????????????????????……,

????????????????????????'news']

  • 应用的结构组成

  1. migrations 目录:?存放数据库中间文件(日志文件)
  2. __init__.py:?应用的初始化文件

  3. admin.py:应用的后台管理配置文件

  4. apps.py:?应用的属性配置文件

  5. models.py:?模型文件,同数据库有关

  6. tests.py:?测试模块,基本没用

  7. views.py:?定义视图的文件

5. Django的Templates

1. 什么是模板

????????模板就是要动态给用户呈现的网页内容

????????其实就是一个网页 ?- 前后端结合的一个网页

2. 模板的设置

????????在settings.py中TEMPLATES变量

????????????1. BACKEND: 指定模板的搜索引擎,不用动

????????????2. DIRS:指定模板所存放目录们, DIRS = ['index.temp'] ???index目录下的temp目录是模板存放位置,如果DIRS为空的话,那么django会自动到每个应用中去搜索一个叫templates的目录来作为模板的管理目录。

????????????????推荐:DIRS内容保持为空 和 在每个应用中都创建一个templates目录

????????????3. APP_DIRS

????????????????True: 首先从dirs中指定的目录中查找模板,如果没有找到的话,再搜索templates目录

3. 模板的加载方式

  • 使用loader获取模板,并通过HttpResponse进行响应

????????from django.template import loader

????????????1. 通过loader加载模板

????????????????t = loader.get_template('模板名称')

????????????2. 通过t对象,将模板渲染成字符串

????????????????html = t.render()

????????????3. 通过HttpResponse将html响应给客户端

????????????????return HttpResponse(html)

  • 使用render直接加载模板并返回

????????from django.shortcuts import render

????????return render(request, '模板名称', 要传给模板变量字典形式)

4 模板的语法

  • 变量

????????作用: 允许将后端的数据传递给模板,在模板中,会根据变量的值进行显示

  • 在django中允许传递给模板做变量的数据类型

????????数字,字符串,列表,元素,字典,函数,对象

  • 变量的语法

????????1. loader

????????????????dic = {

????????????????????'变量名1':'值1',

????????????????????'变量名2':'值2',

????????????????}

????????????????t = loader.get_template('xxx.html')

????????????????return HttpResponse(t.render(dic))

????????????????在模板中显示变量: {{变量名}}

????????2. 标签

????????????????1. 什么是标签

????????????????????允许将服务器端的一些功能嵌入模板中

????????????????2. 语法

????????????????????{% 标签内容 %}

????????????????3、常用标签

????????????????????????1、for

????????????????????????????????{% for 变量 in 列表|元组|字典 %}

????????????????????????????????{% endfor %}

????????????????????????????????允许使用 for 提供的内置变量 - forloop

????????????????????????????????1、forloop.counter:记录当前循环的次数,从1开始

????????????????????????????????2、forloop.first:是否是第一次循环(第一项)

????????????????????????????????3、forloop.last:是否是最后一次循环(最后一项)

????????????????????????2、if

????????????????????????????????1、{% if 条件 %} 满足条件运行的内容 {% endif %}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 条件中允许使用 比较运算符(>,<,>=,<=,==,!=),逻辑运算符(not,and,or)

????????????????????????????????注意:and 和 or 不能同时出现

????????????????????????????????2、{% if 条件 %}满足条件运行的内容{% else %}不满足条件运行的内容{% endif %}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3、{% if 条件1 %}满足条件1运行的内容{% elif 条件2 %}满足条件2运行的内容{% elif 条件3 %}满足条件3运行的内容{% else %}以上条件都不满足的时候运行的内容{% endif %}

????????3、过滤器

????????????????1、作用:过滤数据,在显示变量的数据之前,允许对数据进行筛选或改变

????????????????2、语法: {{变量|过滤器:参数}}

????????????????3、简单的过滤器

????????????????????????1、{{value|upper}} 将value变为大写字符

????????????????????????2、{{value|lower}} 将value编写小写字符

????????????????????????3、{{value|add:num}} 将num累加到value之后

????????????????????????4、{{value|floatformat:n}} 将value四舍五入到n位小数

????????????????????????5、{{value|truncatechars:n}} 将字符串截取到n位(包含...)

6.?模型 Model

  • 什么是模型

????????模型,是根据数据库中数据表的结构来创建出来的class。每一张表到编程语言中就是一个class,表中的每一个列,到编程语言中就是class的一个属性。并且在模型中还可以完成对数据的CRUD操作

  • 创建和使用模型 - ORM【对象关系映射(object Relational Mapping)】

????????三大特征:

????????????1. 数据表到类(class)的映射

????????????????将数据表自动生成一个class类,同时也允许将一个class类自动生成数据库中的一张表

????????????2. 数据类型的映射

????????????????允许将表中的字段的数据类型 自动 映射成编程语言中对应的数据类型,也允许将编程语言的数据类型自动映射成表中的字段的数据类型

????????????3. 关系映射

????????????????在编程语言中允许将表与表之间的关系映射处理,表与表之间的关系也可以自动映射到编程语言的class中,数据库表中的关联关系: 一对一,一对多,多对多

????????优点:

????????????????1. 提高了开发的效率,能够自动完成表到对象的映射

????????????????2. 不用SQL编码,也能够完成对数据的CRUD操作,可以省略庞大的数据访问层

  • 创建和配置数据库

????????1. 创建数据库(支持中文)

????????????????create database 数据库名 default charset utf8 collate utf8_general_ci;

????????2. 配置数据库(Django)

????????????????在settings.py中配置数据库的信息,连接Mysql

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql', ???# 引擎
    'NAME': 'webdb', ???# DB名称
    'USER': 'root', ????# 用户名
    'PASSWORD': '*******', ?# 密码
    'HOST': '127.0.0.1', ???# Host
    'PORT': '3306', ??# 端口号
    }
}
# Django中连接mysql的话依赖pymysql,? 在主目录中__init__.py
import pymysql
pymysql.install_as_MYSQLdb()
  • 数据库的同步操作

????????1. python manage.py makemigrations

? ? ? ? ? 作用: 将每个应用下的models.py文件生成一个数据库的中间文件,并保存在migrations目录中。

????????2. python manage.py migrate

? ? ? ? ? ? 作用: 将每个应用下的migrations目录中的中间文件同步到数据库中。

  • 编写models

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:57:04  更:2022-01-11 23:58:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:10:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码