TUE.Django 链接 MySQL 及 Request 对象方法
Django 小白必备三板斧
1. HttpResponse
- 返回字符串类型数据
2. render
- 返回 HTML 文件
3. redirect
- return redirect( 'http://www.mzitu.com/' )
- return redirect( '/home/' )
request 对象方法
def login ( request) :
"""
返回一个登录界面
get 请求和 post 请求应该有不同的处理机制
:param request: 请求相关的数据对象中包含了很多简易方法
:return:
"""
print ( request. method)
if request. method == 'POST' :
print ( request. POST)
username = request. POST. get( 'username' )
print ( username, type ( username) )
hobby = request. POST. getlist( 'hobby' )
print ( hobby, type ( hobby) )
return HttpResponse( '收到了 宝贝' )
elif request. method == 'GET' :
"""get 请求"""
print ( request. GET)
username = request. GET. get( 'username' )
print ( username, type ( username) )
hobby = request. GET. getlist( 'hobby' )
print ( hobby, type ( hobby) )
"""
get 请求携带的数据大小有限制,大概在 4kb 左右
post 请求携带的数据没有大小限制,甚至可以传输文件
"""
Pycharm 链接数据库
需要事先创建数据库
Django 链接 MySQL
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.sqlite3' ,
'NAME' : os. path. join( BASE_DIR, 'db.sqlite3' ) ,
}
}
1 . 修改配置文件中的默认数据库
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql' ,
'NAME' : 'First_Django' ,
'USER' : 'root' ,
'PASSWORD' : 'hh951212' ,
'HOST' : '127.0.0.1' ,
'PORT' : '3306' ,
'CHARSET' : 'utf8' ,
}
}
2 . 代码声明
Django 默认用的是 MySQLdb 模块链接 MySQL,但是该模块的兼容性较差,需要手动改为 Pycharm 链接
需要使 Django 将默认启动模块更换为 pymysql
import pymsql
pymysql. install_as_MySQLdb( )
Django ORM
ORM - - 对象关系映射
可以让一个不适用 SQL 语句的小白也能通过 Python 面向对象的代码简单快捷操作数据库
不足之处:封装程度太高,导致 SQL 语句效率偏低,需要自己写 SQL 语句
'''
类 表
对象 记录
对象属性 记录某个字段对应的值
'''
应用下的 modles. py
1 . 先去 modles. py 中定义一个类
class User ( modles. Modles) :
id = modles. AutoFiled( primary_key= True )
username = modles. CharFiled( max_length= 32 )
"""
CharFiled 必须指定 max_length 参数,否则会报错
verbose_name 该参数所有字段都有,表示对字段的解释
"""
password = modles. CharFiled( max_length= 32 )
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
2 . 在 Python 的 Terminal 中输入数据库迁移命令
python3 manage. py makemigrations
python3 manage. py migrate
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
补充:
class Author ( models. Model) :
username = models. CharField( max_length= 32 , verbose_name= '用户名' )
password = models. IntegerField( verbose_name= '密码' )
"""
由于一张表中必须有一个主键字段,并且一般情况下都叫 id 字段,因此 ORM 在表中未定义主键时,自动创建一个名为 id 的主键字段
这也就意味着,在创建表时名为 'id' 的主键字段可以省略不写
"""
class Migration ( migrations. Migration) :
dependencies = [
( 'app_Zero' , '0001_initial' ) ,
]
operations = [
migrations. CreateModel(
name= 'Author' ,
fields= [
( 'id' , models. AutoField( auto_created= True , primary_key= True , serialize= False , verbose_name= 'ID' ) ) ,
( 'username' , models. CharField( max_length= 32 , verbose_name= '用户名' ) ) ,
( 'password' , models. IntegerField( verbose_name= '密码' ) ) ,
] ,
) ,
migrations. AlterField(
model_name= 'user' ,
name= 'password' ,
field= models. IntegerField( verbose_name= '密码' ) ,
) ,
migrations. AlterField(
model_name= 'user' ,
name= 'username' ,
field= models. CharField( max_length= 32 , verbose_name= '用户名' ) ,
) ,
]
字段的增删改查
增
1 、直接在 modles. py 中增加字段
- 在 Python Terminal 为该字段添加默认值
age = models. IntegerField( verbose_name= '年龄' )
'''
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit, and let me add a default in models.py
Select an option: 1
'''
2 、在 modles. py 中增加字段时设置默认值
- 为空
info = models. CharField( max_length= 32 , verbose_name= '用户简介' , null= True )
- 默认值
hobby = models. CharField( max_length= 32 , verbose_name= '爱好' , default= 'money' )
删
1 . 将需要删除的字段直接注释或删除
2 . 在 Python Terminal 执行数据库迁移命令
'''
在操作 modles.py 时一定要谨慎
1、不要注释无关字段
2、执行迁移命令前要先检查一下自己的代码
'''
改
1 . 在 modles. py 中修改字段
2 . 在 Python Terminal 执行数据库迁移命令
查
直接在 modles. py 中查看即可