1、简介与环境搭建
MVC框架 -- 以用户注册为例
Django是python中遵循MVC的一个web框架
Django 中是MVT的模式,本质等同于MVC
M:model模型 V:view视图 T:template模板
其中V视图 相当于MVC中的C控制器,T模板相当于MVC中给的V视图
快速开发 和 DRY原则 -- do not repeat yourself
ubuntu环境
先安装 pip python库module安装工具:sudo apt-get install python-pip
由于我mac下面的virtualenvwrapper.sh 位于 /Users/fuli/anaconda3/bin/路径下,
(可以用 which virtualenvwrapper.sh 查看其路径)
所以在mac中安装virtualenvwrapper完成之后 是编辑home目录下面的 .bash_profile 下添加如下两行
export WORKON_HOME=~/.virtualenvs
source /Users/fuli/anaconda3/bin/virtualenvwrapper.sh
注意:如果在创建python3的虚拟环境的时候,报 ModuleNotFoundError:No Module named "distutils.spawn" 错的话,应该是安装的python3版本 (pycharm中自带python3.6版本也是如此) 中不包含这个module,需要单独安装一下:sudo apt-get install python3-distutils
遇到的坑: 如果安装virtualenv报ModuleNotFoundError: No module named 'pip' ,可能是未安装pip或者安装的pip对应python2.x版本。 可以通过 sudo apt install python3-pip重新安装python3.x版本的pip
安装python3.x 对应的pip之后 可以在--version中查看安装
这样 virtualenv 虚拟环境 和 virtualenvwrapper 虚拟环境扩展包 就可以正常安装了
正文继续...
查看python版本
如果默认的python版本为2.x ,并且也已经安装了3.x的版本,则可以通过下面的命令将默认的python版本改成3.x的
注意:以python3.x为例,用pip安装python包的话,默认把所有的包 安装在 python3.x/dist-packages下面。
deactivate -- 退出python虚拟环境
workon 虚拟环境名字 -- 进入相应的虚拟环境中
rmvirtualenv 虚拟环境名字 -- 删除相应的虚拟环境
pip list 或者 pip freeze -- 查看已经安装的python库(需要在相应的虚拟环境下)
Django项目和应用创建
settings.py是项目的配置文件,比如可以在里面配置使用哪些数据库
在Django中,一个功能模块使用一个django应用来开发实现 -- 每个应用可以完成特定的功能
创建的 应用-模块 下面的各个文件的作用
项目 和 项目下面的应用创建好之后,下一步是 建立应用和项目之间的联系,需要对应用进行注册。
也就是说 在项目中创建好一个应用之后,这个项目本身是不知道这个应用的存在的。
注册方法:修改 setting.py 中的 INSTALLED_APPS 配置项
注册完成之后 运行开发web服务器:在项目目录下 python manage.py runserver
启动成功的页面 如下
2、Django基本使用
ORM简介
Django中内嵌了 ORM 框架。
model.py中 写和数据库相关的内容,其实就是设计和表对应的类--模型类
模型类生成表分为两步
第二步是根据迁移文件 0001_initial.py 生成数据库中相对应的表。
上面第二步执行完之后,该文件下多了一个db.sqlite3的文件
打开这个数据库之前需要先安装一个软件
sudo apt install sqliteman
安装sqliteman完成后 在shell中输入sqliteman并打开相应的db.sqlite3数据库
上面那个first_app_module_bookinfo就是first_app_module应用下models.py中BookInfo模型类对应的表
上面提到:ORM框架可以将类和数据表对应起来,只需要通过类和对象就可以对数据表进行操作。不需要写SQL语句
下面将提到 怎么通过模型类来操作数据表。
在相应虚拟环境下,进入项目shell终端,并在里面操作
python manage.py shell
如上图,操作完之后对应的sqlite3数据库中就多了一条数据信息。其中id是系统分配的,不需要咱们设定。
另外 查询id为1的数据的方式 和 修改其属性(这里是bpub_data属性)如下:
>>> b2.delete() # 删除数据
例如 再建立一个 英雄人物类
创建迁移文件 和 对应的生成表
查询和某本图书关联的所有的英雄的信息 b.heroinfo_set.all() -- b为某本图书实例
Django 后台管理
1. 本地化
修改 项目中的settings.py文件 -- 中文 和 中国时区
2. 创建管理员
python manage.py createsuperuser # 此命令为创建管理员
然后可以启动服务器 python manage.py runserver,登录后台管理页面
3. 注册模型类
在应用下的admin.py中注册模型类
告诉Django框架根据注册的模型类来生成对应的表管理页面
然后刷新页面,此时first_app_module应用中的BookInfo模块类会被更新到页面中
b = BookInfo()
str(b) 默认关系表中显示的是对象的字符串形式 即 str(b)
可以在models.py中重写__str__方法 使其返回书名
4. 自定义管理页面
控制后台管理页面所显示的内容,自定义模型管理类。 模型管理类就是告诉Django在生成的管理页面上显示哪些内容。
视图 V
注意:Django2.x 的版本新增了 django.urls.path函数。它允许使用一种更加简洁、可读的路由语法。
具体用法参考 https://blog.youkuaiyun.com/m0_38024592/article/details/83957804
1. 定义视图函数
2. 进行url的配置
url匹配的过程
模板 T
模板不仅仅是一个html文件,也可以定义变量,插入代码片段等
模板文件的使用:
1. 创建模板文件夹 -- 在项目文件夹下创建
2. 配置模板目录 -- 主要是DIRS参数
3. 使用模板文件
给模板文件传递数据
实例
当for循环中的循环次数为0时 执行empty中的语句 -- 其中{% %} 为模板的标签