文章目录
- 1、安装Django
- 2、创建项目
- 3、默认项目的介绍
- 4、APP
- 5、快速上手
- 5.1 写一个页面
- 5.2 templates模板
- 5.3 静态文件
- 5.3.1 static目录
- 5.3.2 引用静态文件
- 6、模板语法
- 7、请求和响应
- 8、数据库操作
- 8.1 安装第三方模块
- 8.2 ORM
- 8.3 案例:用户管理
1、安装Django
pip install django
安装后会有一个创建Django项目的工具:django-admin
2、创建项目
(1)django-admin startproject mysite
(2)pycharm专业版也可直接创建
区别:
- 创建了一个templates目录 【可删除】
- 在settings.py中’DIRS’: [os.path.join(BASE_DIR, 'templates’)] 【可删除】
3、默认项目的介绍
mysite
├── manage.py 【项目的管理,启动项目、创建app、数据管理】【常用,但不要动】
└── mysite├── __init__.py├── settings.py 【项目配置】【***常修改***】├── urls.py 【URL和函数的对应关系】【***常修改***】├── asgi.py 【接收网络请求】【不要动】异步└── wsgi.py 【接收网络请求】【不要动】同步
4、APP
— 项目— app,用户管理【表结构、函数、HTML模板、CSS】— app,订单管理【表结构、函数、HTML模板、CSS】— app,后台管理【表结构、函数、HTML模板、CSS】— app,网站【表结构、函数、HTML模板、CSS】— app,API【表结构、函数、HTML模板、CSS】…
注意:我们开发比较简洁,用不到多个app,一般情况下,项目下创建1个app即可
创建app:
├── app01
│ ├── __init__.py
│ ├── admin.py 【固定,不用动】django默认提供了admin后台管理
│ ├── apps.py 【固定,不用动】app启动类
│ ├── migrations 【固定,一般情况下不用动】数据库字段变更记录
│ │ └── __init__.py
│ ├── models.py 【**重要**】对数据库操作
│ ├── tests.py 【固定,不用动】单元测试的
│ └── views.py 【**重要**】函数
├── manage.py
└── mysite├── __init__.py├── asgi.py├── settings.py├── urls.py 【URL->函数】└── wsgi.py
5、快速上手
- 确保app已注册【settings.py】
- 编写URL和视图函数对应的关系【urls.py】
- 编写视图函数【views.py】
- 启动Django项目
python3 manage.py runserver
5.1 写一个页面
url -> 函数
5.2 templates模板
5.3 静态文件
在开发过程中一般将:
- 图片
- CSS
- js
当静态文件处理
5.3.1 static目录
在app目录下创建static文件夹
5.3.2 引用静态文件
{% static … %} 就是执行static函数(模板语言)
6、模板语法
本质上:在HTML中写一些占位符,由数据对这些占位符进行替换和处理
案例:伪新闻中心
7、请求和响应
关于重定向:redirect('https://www.baidu.com')
案例:用户登录
解决方法:
8、数据库操作
- mMySQL数据库+pymysql
import pymysql# 1.连接MySQL
conn = pymysql.connect(host='localhost', port=3306, user='root', password='19980123', charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 2.发送指令(千万不要用字符串的格式化去做SQL的拼接,会有安全隐患SQL注入)
sql = 'insert into admin(username, password, mobile) values(%s, %s, %s)’
# %s是pymysql里面的占位符,用(%(n1)s, %(n2)s, %(n3)s),表示传字典{'n1': 'Tony', 'n2': 'qw123456', 'n3': '13177778888'}
cursor.execute(sql, ['Lily', '123456', '13888888888'])
conn.commit()# 3.关闭连接
cursor.close()
conn.close()
- Django开发操作数据库更简单,内部提供了ORM框架
8.1 安装第三方模块
pip install mysqlclient
8.2 ORM
ORM可以帮助我们做两件事:
- 创建、修改、删除数据库中的表(不用写SQL语句) 【无法创建数据库】
- 操作表中的数据(不用写SQL语句)
(1)自己创建数据库
- 启动MySQL服务
- 自带工具创建数据库
create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
(2)Django连接数据库
在settings.py文件进行配置和修改
DATABASES = {"default": {"ENGINE": "django.db.backends.mysql","NAME": "django_study", # 数据库名"USER": "root","PASSWORD": “password","HOST": "127.0.0.1","PORT": "3306",}
}
(3)Django操作表
- 创建表
- 删除表
- 修改表
创建表:在models.py文件中
执行命令(app需要提前注册):
python3 manage.py makemigrationspython3 manage.py migrate
在表中新增列队时,由于已存在列可能已有数据,所以新增列必须要指定新增列对应的数据:
- 执行
python3 manage.py makemigrations
命令后选1,手动输入一个值 - 设置默认值
age = models.IntegerField(default=2)
- 允许为空
data = models.IntegerField(null=True, blank=True)
(4)操作表中的数据
# 测试Ormond操作表中的数据 2011-11-11 datetime.datetime.now()
# ##### 1.新建 #####
# Department.objects.create(title='人事部', code='101')
# Department.objects.create(title='财务部', code='102')
# Department.objects.create(title='技术部', code='103')# UseInfo.objects.create(username='Tom', password='123', age=20)
# UseInfo.objects.create(username='Jerry', password='123', age=22)
# UseInfo.objects.create(username='Jack', password='123')# ##### 2.删除 #####
# UseInfo.objects.filter(id=1).delete()
# Department.objects.all().delete()# ##### 3.获取数据 #####
# 3.1 获取符合条件的所有数据
# data_list = [行, 行, 行] QuerySet类型
# data_list = UseInfo.objects.all()
# for row in data_list:
# print(row.id, row.username, row.password, row.age)
# 3.2 获取第一条数据【对象】
# row_obj = UseInfo.objects.filter(id=2).first()
# print(row_obj.id, row_obj.username, row_obj.password, row_obj.age)# ##### 4.更新数据 #####
UseInfo.objects.filter(id=2).update(age=30)
8.3 案例:用户管理
1、展示用户列表
URL
函数
- 获取所有用户信息
- HTML渲染
2、添加用户
URL
函数
- GET,看到页面,输入内容
- POST,提交->写入数据库
3、删除用户