目录
1、 安装django
1.1django是第三方模块,用pip install django 安装:
1.2 python的安装目录 :
2、创建项目
2.1在终端创建的步骤
执行过程
2.2使用pycharm(企业版)创建 django项目
2.3对比两种方式
2.4默认文件介绍
2.5app的创建和说明
创建app:
app目录:
2.6启动运行django
注意:加载目录不对,可能会导致项目出错
2.7模板和静态文件
2.7.1再写一个页面
2.7.2templates模板
2.7.3静态文件
2.8django的模板语法
案例
2.9请求和相应
3个请求
3个响应
案例:用户登录
2.10orm_连接MySQL的模块
安装第三方模块:
2.11orm-创建数据库
1.自己创建数据库
2.12orm_连接MySQL的配置
2.Django连接数据库
2.13orm_类创建表
3.django操作表
2.14orm_创建和修改表结构
添加(如下)/删除表(删除相应的语句,然后重新执行2条命令语句)
修改表中的列
以后在开发中想要对表结构进行调整
2.15orm-增删改查
操作表中的数据
新建数据:
删除数据:
获取数据:
更新数据:
案例:用户管理
1、展示用户列表
2、添加用户
3、删除用户
跟着B站武沛齐老师学习的笔记…..
1、 安装django
1.1django是第三方模块,用pip install django 安装:
1.2 python的安装目录 :
django除了会把安装的模块(框架的源码,需要导入并利用其中的功能)放到…./Lib/site-pachages中外,还会生产一个文件(这是一个帮助我们创建项目的工具)放在…./Scripts中。
2、创建项目
django中项目会有一些默认的文件和默认的文件夹
2.1在终端创建的步骤
- 打开终端
- 进入某个目录(项目想放在的地方)
D:django ideadisease predication>
- 执行命令,创建项目
在django-admin所在目录执行命令
"D:softwarestudy softwarepycharmpythonScriptsdjango-admin.exe" startproject 项目名称
如果D:softwarestudy softwarepycharmpythonScripts已经加入到系统环境变量,则可执行:
django-admin.exe startproject 项目名称
执行过程
执行命令创建项目以及创建成功之后的项目文件概览:
2.2使用pycharm(企业版)创建 django项目
创建操作:
2.3对比两种方式
- 命令行:创建的项目是标准的
- pycharm: 在标准的基础上默认加了东西
1、创建templates了目录,【删除】即可
2、在settings.py多了一句【删除】
2.4默认文件介绍
2.5app的创建和说明
app是一个应用,django中是可以编写大型的项目的,每一个大项目中有很多分类的小功能,支持拆分成一个个小的app
——项目
——app,用户管理【表结构、函数、HTML模板、CSS】
——app,订单管理
——app,API
——app,网站
每一个app可以有自己独立的数据库的表结构.....
创建app:
进入文件所在目录的终端,执行python manage.py startapp app01 命令创建 app。但是在创建的过程中出现了以下的报错:未能解决
参考了:http://t.csdn.cn/imPci
重新建立了 项目,目前可以成功创建app,之后的操作学习以新建的djangoProject项目展开
app目录:
2.6启动运行django
- 确保app已注册【settings.py】
- 编写URL和视图函数对应关系【urls.py】
- 编写视图函数【views.py】
用户如果访问这个URL,会执行这个函数,函数返回了一个“欢迎使用” 的字符串,用户的浏览器上就会出现。
- 启动django项目
- 命令行启动:python manage.py runserver
- PyCharm启动:
注意:加载目录不对,可能会导致项目出错
2.7模板和静态文件
2.7.1再写一个页面
所有的配置做完了,之后做开发的本质就是:在urls中添加一个对应关系,在views中写一个视图函数处理请求。
2.7.2templates模板
返回一个HTML
2.7.3静态文件
- 在app目录下创建static文件夹
- 引入静态文件
2.8django的模板语法
模板语法是django开发的,本质:在HTML中写一些占位符 ,由数据对这些占位符进行替换和处理
用户浏览器接收到的:
案例
伪联通消息中心
http://www.chinaunicom.com/news/list202304.html
后续完善
2.9请求和相应
3个请求
GET请求时放在明面上传递的,POST请求偷偷传递的,表面看不到
3个响应
关于重定向:浏览器向某个网站发送请求,某个网站返回值告诉浏览器你去别的地方吧,浏览器自己去这个地了,跟网站没有关系,即下图的第二种形式:
案例:用户登录
报错解决:
以上错误的解决办法如下:默认情况下Django比Flask多了一个功能,CSRF token的验证
代码:
最终实现的一个效果:
2.10orm_连接MySQL的模块
Django开发中引入了一个更简单操作数据库的机制。操作数据库更简单,内部提供了ORM框架。
安装第三方模块:
pip install mysqlclient
安装出错:
解决办法:(进入python解释器所在目录,右键打开终端,执行命令进行安装)
2.11orm-创建数据库
ORM可以帮我们做两件事:
- 创建、删除、修改数据库中的表(不用自己写SQL语句)【无法创建数据库】
- 操作表中的数据(不用写SQL语句)因为Django会将你写的代码通过ORM翻译成SQl语句
1.自己创建数据库
1、打开MySQL 8.0 Command Line Client
2、输入数据库密码
3、show databases;通常用于在关系数据库管理系统(如MySQL、PostgreSQL、SQLite等)中列出所有可用的数据库
4、create database gx_day14 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;创建数据库
- 启动MySQL服务
- 自带工具创建数据库
create database gx_day14 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
任务栏搜索打开
基础数据库的学习:(144条消息) 数据库与身份认证_大炮不想学习的博客-CSDN博客
2.12orm_连接MySQL的配置
自己电脑的mysql环境变量配置:
配置环境变量
看是否配置成功
2.Django连接数据库
在settings.py文件中进行配置和修改
默认Database用的sqlite文件数据库
换成下边这个:Django会默认帮我们连接数据库
2.13orm_类创建表
3.django操作表
- 创建表
- 删除表
- 修改表
创建表:在models.py中
# UserInfo是类 必须继承 models.Model
class UserInfo(models.Model):
# 字段
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
执行命令:
python manage.py makemigrations
python manage.py migrate
注意:
- 确保python解释器安装了Mysqlclient
- 确保当前所在的路径是当前项目的根目录
- app需要提前注册(app没有注册到setting.py里边,models.py中的表不会提交到数据库 )
这里特别容易出错,更改一下解释器重新安装
最终进入到manage.py所在的目录,打开终端,执行命令,才得以成功安装!!!!
但是以上安装的操作,后续在数据库中查找不到表
注意:项目的路径中中不能有中文,后来移动的项目的位置,重新执行了以下命令:
- pip install mysqlcliennt
- python manage.py makemigrations
- python manage.py migrate
命令:
use gx_day14切换到名为 “gx_day14” 的数据库
show tables;显示当前数据库中所有表格的SQL命令
desc app01_userinfo;可以看到创建的表
为什么除了app01_userinfo这个表,还有一些其他的表?因为一旦执行命令回去内部找每一个app里边的models.py根据语句生成相应的表,但是Django默认提供了很多其他的app(django内置提供的功能,这些功能都是依赖于数据库的一些表的), 在setting.py中可以看到,所以生成表的时候把默认的一些表也生成了。不想用直接在下边图片中的对应位置注释掉即可
输入命令desc app01_userinfo;可以看到创建的表
2.14orm_创建和修改表结构
添加(如下)/删除表(删除相应的语句,然后重新执行2条命令语句)
修改表中的列
由于已存在的列中可能有数据,所以新增列必须要指定新增列对应的数据:
- 手动输入值
- 设置默认值
- 允许为空
以后在开发中想要对表结构进行调整
在models.py文件中操作类即可,然后执行命令:
python manage.py makemigrations
python manage.py migrate
2.15orm-增删改查
操作表中的数据
新建数据
写个url来测试该功能
新建数据:
# #### 1.新建 ####
# Department.objects.create(title="销售部")
# Department.objects.create(title="IT部")
# Department.objects.create(title="运营部")
# UserInfo.objects.create(name="武沛齐", password="123", age=19)
# UserInfo.objects.create(name="朱虎飞", password="666", age=29)
# UserInfo.objects.create(name="吴阳军", password="666")
删除数据:
# #### 2.删除 ####
# UserInfo.objects.filter(id=3).delete()
# Department.objects.all().delete()
# UserInfo.objects.all().delete()
获取数据:
获取符合条件的所有数据
获取某一行数据
更新数据:
# #### 4.更新数据 ####
UserInfo.objects.all().update(password=999)
UserInfo.objects.filter(id=19).update(age=999)
UserInfo.objects.filter(name="朱虎飞").update(age=999)
return HttpResponse("耶耶耶")
案例:用户管理
1、展示用户列表
- url.py
- view.py函数
获取所有用户的信息
html渲染
2、添加用户
实现用户输入用户,然后添加到数据库
- url.py
- view.py函数
GET:看到页面,输入内容
POST:提交——>写入到数据库
在列表页加按钮,点击直接跳转到添加页面
3、删除用户
- url.py
- view.py函数
需求
http://127.0.0.1:8000/info/delete/?nid=1
http://127.0.0.1:8000/info/delete/?nid=2
http://127.0.0.1:8000/info/delete/?nid=21
def 函数(request):
#.GET在url后边获取传过来的参数,POST是获取请求体传过来的值
nid=request.GET.get("nid")
UserInfo.objects.filter(id=nid).delete()
return HttpResponse("删除成功")