阅读本文大概需要 20 分钟
什么是 Django
Django 是一个基于 python 的高级 web 开发框架。
它能够让开发人员进行高效且快速的开发。
高度集成(不用自己造轮子),免费并且开源。我们只要专注于网站本身的开发就好了。
浏览器浏览网页的基本原理
本质是网络通信,即通过网络进行数据传输
浏览器经过通信后获取到该页面的源代码文档(HTML等)
浏览器解析文档后以适当的形式展现给用户
创建项目
在 pycharm 中新建 Django 项目。
项目目录结构:
目录结构
manage.py 文件
它是与项目进行交互的命令行工具集的入口
也就是项目管理器
我们点运行命令:
运行
下方控制台输出:
项目开始运行在我们本地,打开网址:http://127.0.0.1:8000 。就可以看到我们的项目已经开启了。
项目开启
myblog 目录
项目的一个容器
包含项目最基本的一些配置
目录名称不建议修改
mybolg 目录下的文件
wsgi.py
WSGI(python web server gateway interface)
中文名:python服务器网关接口
python应用与 web 服务器之间的接口
只有我们实现了 wsgi 接口,web 接口才能识别我们的 python 网站,然后才能提供服务,我们才能访问我们用python做的网站。
在项目开发过程中基本上不会用到这个文件。
urls.py
URL配置文件
Django 项目中所有地址(页面)都需要我们自己去配置它的 url
settings.py
项目的总配置文件
里面包含了数据库,web 应用、时间等各种配置
这个是项目的根目录
这个是安全码,项目要想启动必须要由它。Django 在创建项目的时候会自动生成这个安全码。
这个是调试,但是上方的注释,不要在实际生产中打开它。如果打开,再出现异常的情况向会直接抛给前端。
原装的应用,Django 的项目中是有许多个应用组成的,默认生成的是 Django 自带的应用。
如果我们创建了自己的应用,要把应用写在这个里面,这样才能被 Django 识别。
中间件,Django 自带的工具集。
url 的跟文件,指向的是 urls.py 文件。
模板配置
数据库配置,默认使用的是 sqlite3 数据库。
跟密码认证有关。
配置语言,时区等
静态文件的地址
python 中声明模块的文件,一般内容都为空,有了它,我们的 myblog 目录就变成了一个模块。可以在代码中引用。
创建应用
在 pycharm 下方的 Terminal 输入以下命令,也可以在命令行中切换到 myblog 目录下输入以下命令:,我的项目放在了 E 盘:
创建之后,我们要把这个应用添加到 setting.py 文件中的 INSTALLED_APPS 里:
注意:创建的应用名称不可以和 python 中的模块名称相同,否则创建不成功。
blog 的目录结构
blog目录结构
migrations(中文意思是:移植,迁移)
数据移植(迁移)模块,文件夹下的内容由 Django 自动生成的。
admin.py
当前应用的后台管理系统配置
Django 其一的特点是有自己的后台的管理系统,所以每个应用下都有各自的配置文件。
app.py
当前应用的一些配置
models.py
数据模型模块,创建数据表在这个模块中创建的。
使用 OMR 框架,类似于 MVC 结构中的 Models (模型)
test.py
自动化测试模块
Django 给我们提供了自动化测试功能,我们在这里编写相应的代码即可针对性进行自动化测试
在这里编写测试脚本(语句)
views.py
非常重要的文件,我们每接收一个请求都要响应,响应什么东西,怎么响应都是在这里完成的,处理之后再返回回去。
执行响应的代码所在的模块
代码逻辑处理的主要地点
项目中大部分代码都是在这里编写
创建第一个页面(响应)
1.编辑 blog.views
每个响应对应一个函数,函数必须返回一个响应
函数必须存在一个参数,一般约定为 request
每个响应(函数)对应一个 url
配置url
每个 url 都是以path 的形式写出来
path 函数放在 urlpatterns 列表中
path 函数有三个参数:URL(正则表达式),对应方法,名称
打开 myblog 文件夹下的 urls.py 。
启动服务
点击 pycharm 上方 run 运行 myblog ,或者在命令行切换到 myblog 文件夹下运行
打开浏览器,输入:http://127.0.0.1:8000/index/
首次响应
第二种 url 配置
根 urls.py 文件中:
在blog 文件下新建 urls.py 文件:
在根 urls.py 文件中引入 include
在APP应用下,也就是 blog 文件下创建 urls.py 文件,格式跟根 urls.py 相同
根 url.py 文件中 path 函数第二个参数改为 include('blog.urls')
注意:根url.py 针对APP配置的URL名称,是该APP的所有 URL总路径
templates介绍
什么是 templates
就是一个一个 HTML 文件
使用了 Django 模板语言(Django Template Language )DTL
可以使用第三方模板(如Jinja2)
在 settings.py 文件中的:
第一行修改。
开发第一个 Template
在APP的根目录下创建名叫 Template 的目录
在该目录下创建一个 HTML 文件
html
3.在 views.py 文件中返回一个 render()
运行一下项目看看页面:
第一个模板
DTL 初步使用
render() 函数的第三个参数是传递数据到前端的,这个参数支持一个字典 dict 类型的数据。
该字典是后台传递到模板的参数,键位参数名
在模板中使用 {} 来直接使用
例:
views.py 文件中:
templates/index.html 文件下:
页面展示:
展示
再新建一个应用(解决一个小问题)
在 pycharm 下方的 Terminal 输入以下命令,也可以在命令行中切换到 myblog 目录下输入以下命令
添加应用到 settings.py 中的 INSTALLED_APPS 里
接着我们把 blog 里的 templates 文件夹复制到 blog2 中
urls 也复制一份到blog2 中
把两个应用中的templates 中HTML文件改成
blog 应用下的 views.py 文件内容复制一份到 blog2 应用下。
根 urls.py 文件中添加:
之后重启项目,我们会发现,在 http://127.0.0.1:8000/blog/index/ 和 http://127.0.0.1:8000/blog2/index/ 上看到的页面是一样的。
这里是 Django 把我们的 index 搞混了。
Django 在查找 template 是按照 INSTALLED_APPS 中的添加顺序查找 template ,如果我们不同应用下的template 下的HTML 文件名字相同,就会造成冲突。
不同APP下templates目录下的同名.html文件会造成冲突。
解决templates冲突方案
在APP的templates目录下创建一个以APP名为名称的目录
将HTML文件放入新创建的目录下
再检查一下我们两个应用的 view.py 文件,运行一下,发现正常显示。
models 介绍
models
Django 中 models 是什么?
通常,一个model 对应数据库中的一张数据表
Django 中的model 是以类的形式表现
在这个类中包含了一些基本的字段以及数据的一些行为
在 Django 中我们以创建类的形式创建数据表,因此我们在编写代码中,所有对数据的操作,事实上都是对类以及类对象的操作。这样一来,我们就不用写SQL语句了。
ORM
这种方式被称为 ORM :对象关系映射(Object Relation Mapping)
实现了对象和数据库之间的映射
隐藏了数据访问的细节,不需要编写SQL语句
编写 models
在应用的根目录下创建models.py ,并引入models 模块。这一步 Django 已经帮我们创建好了。
在 models.py 文件下创建类,继承 models.Model,该类即是一张数据表
3.在类中创建字段
字段创建
字段即类里面的属性(变量)
更多字段内容 点这里
我们的模型已经创建好了,怎么映射成数据表呢?
映射生成数据表
命令行进入 manage.py 同级目录 也就是当前项目的目录
执行 python manage.py makemigrations app(可选)(翻译过来就是制作数据迁移)(可选意味着不选的话,默认所有应用都映射数据表)
再执行 python manage.py migrate
这里额外创建的数据表示 Django 自带的应用创建的数据表
查看
Django 会自动在 app/migrations/ 目录下生成移植文件
可以看到这里多了一个id字段,我们并没有创建,怎么会有呢?这里是Django 帮我们创建的,因为我们在创建的时候没有指定主键,这里Django 帮我们自动创建了。
执行 python manage.py sqlmigrate 应用名 文件id 查看SQL语句
默认的sqlite3的数据库在项目的根目录下db.sqlite3
查看并编辑db.sqlite3
使用第三方软件
SQLite Expert Personal
轻量级,完全免费
到这里要安装软件,一篇文章太长也不好。下一篇接着来。
领取专属 10元无门槛券
私享最新 技术干货