Django基础学习
1 Django的安装
pip install django
c: \python
-python. exe
-Scripts
-plp. exe
-django- admin.exe【工具,创建 django项目中的文件和文件夹】
-Lib
-内置模块
-site-packages
-openpyxl
-python-docx
-flask
-django 【框架的源码】
2 创建项目
django中项目会有一些默认的文件和认的文件夹。
2.1 在终端
- 打开终端
- 进入某个目录,确定文件存放位置
E:\pythonstudy\Django
- 执行文件创建命令
"D:\Anaconda\Scripts\django-admin.exe" startproject 项目名称
若已经将Scripts加入环境变量,就可以直接
django-admin startproject 项目名称
2.2 在pycharm
特别说明:
- 命令行,创建的项目是标准的。
- pycharm,在标准的基础上默认给咱们加了点东西。
- 创建了一个 templates目录(删除)
- settings.py中加了一句话
默认项目文件介绍:
mysite
├── manage.py [项目的管理,启动项目,创建app,数据管理,不要动他]
└── mysite
├── __init__.py
├── asgi.py [接收网络请求,不要动他]
├── settings.py [项目配置文件] [常用]
├── urls.py [URL和函数的对应关系,常用文件]
└── wsgi.py [接收网络请求,不要动他]
3 创建APP
-项目
- app : 用户管理 [表结构、函数、HTML模板、css]
- app : 订单管理 [表结构、函数、HTML模板、css]
- app : 后台管理 [表结构、函数、HTML模板、css]
- app : 网站 [表结构、函数、HTML模板、css]
- ....
开发比较简洁,用不到多app,一般情况下创建一个即可
用manage创建App
views和models是最常用到的文件,其他的app里的文件基本不用动。
一般函数都定义在views里,而models一般是对数据库的操作。
4 快速上手
- 确保App已经注册
在INSTALLED_APPS里添加新字段,将App的名称加上去
- 编写URL视图和函数的关系【urls.py】
- 编写视图函数【views.py】
-
启动Django项目
- 命令行启动
python manage.py runserver- pycharm启动
4.1 再写一个页面
先在urls加上要新增的函数对应关系
然后在views里加上新增的函数
4.2 templates模板
4.3 静态文件
在开发过程中一般将img,css,js都称作静态文件
4.3.1 static目录
在app目录下创建static文件夹
4.3.2 引用静态文件
5 模板语法
本质上:在HTML中写一些占位符,由数据对这些占位符进行替换和处理。
6 请求和响应
案例:用户登录
如果出现了该错误
在html中加入 {% csrf_token %} 即可登录成功
7 数据库操作
- Django开发操作数据库更简单,内部提供了ORM框架,
7.1 安装第三方模块
pip install mysqlclient
7.2 ORM
ORM可以帮我们做两件事:
- 创建、修改和删除数据库中的表(不用写SQL语句)【但无法创建数据库】
- 操作表中的数据(不用写sql语句)
(1)创建数据库
(2)连接数据库
DATABASES={
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'djangostudy',
'USER':'root',
'PASSWORD':'123456',
'HOST':'127.0.0.1',
'PORT':3306,
}
}
(3)django操作表
- 创建表
- 删除表
- 修改表
创建表:在models.py文件中:
create table app01_userinfo(
id bigint auto_increment primary key,
name varchar(32),
password varchar(64),
age int
)
执行命令:(在项目根目录执行)
python manage.py makemigrations
python manage.py migrate
然后就会在mysql生成对应的表
在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:
-
手动输入一个值
-
设置默认值
age = models.IntegerField(default = 2 ) -
允许为空
age = models.IntegerField(null = True , blank = True)
以后在开发中如果想要对表结构进行调整:
- 在models.py文件中操作类即可。
- 命令
python manage.py makemigrations
python manage.py migrate
(4)操作表中的数据
##### 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()
##### 3.获取数据 #####
3.1 获取符合条件的所有数据
data_1ist = [对象,对象,对象] QuerySet类型
data_list = UserInfo.objects.all()
for obj in data_list:
print(obj.id,obj.name,obj.password,obj.age)
data_List = [对象,]
data_list = UserInfo.objects.filter(id=1)
print(data_list)
3.1 获取第一条数据【对象】
row_obj UserInfo.objects.filter(id=1).first()
print(row_obj.id,row_obj.name,row_obj.password,row_obj.age)
##### 4.更新数据 #####
UserInfo.objects.all().update(password=999)
UserInfo.objects.filter(id=2).update(age=999)
UserInfo.objects,filter(name="南极星"),update(age=999)
案例:用户管理
1.展示用户列表
-
url
-
函数
- 获取所有用户信息
- HTML渲染
2.添加用户
- url
- 函数
- GET,看到页面,输入内容
- POST,提交——>写入数据库
3.删除用户
- url
- 函数

浙公网安备 33010602011771号