TUE.Django 链接 MySQL 及 Request 对象方法

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)  # 以大写的字符串形式返回当前请求方式 - <class 'str'>

    if request.method == 'POST':
        # 获取 URL 后的携带的参数
        # http://127.0.0.1:8000/login/

        print(request.POST)  # 获取用户提交的 post 请求数据(不包含文件)
        # <QueryDict: {'username': [''], 'password': ['']}>

        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 请求"""
        # 获取 URL 后的携带的参数
        # http://127.0.0.1:8000/login/?username=Surprise&password=&hobby=1&hobby=2&hobby=3
        print(request.GET)  # 获取用户提交的 get 请求数据
        # < QueryDict: {'username': ['Surprise'], 'password': [''], 'hobby': ['1', '2', '3']} >

        username = request.GET.get('username')  # 获取列表最后一个元素,并返回一个字符串
        print(username, type(username))

        hobby = request.GET.getlist('hobby')  # 获取列表所有元素,并返回一个字典
        print(hobby, type(hobby))


"""
get 请求携带的数据大小有限制,大概在 4kb 左右
post 请求携带的数据没有大小限制,甚至可以传输文件
"""

Pycharm 链接数据库

需要事先创建数据库

Django 链接 MySQL

# Django 默认数据库 -- SQLite3
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
  # 在项目名下的 init 或者任意应用名下的 init 文件中输入以下代码即可
import pymsql
pymysql.install_as_MySQLdb()

Django ORM

ORM -- 对象关系映射
可以让一个不适用 SQL 语句的小白也能通过 Python 面向对象的代码简单快捷操作数据库
不足之处:封装程度太高,导致 SQL 语句效率偏低,需要自己写 SQL 语句

'''
类							表
对象					 记录
对象属性				记录某个字段对应的值
'''

应用下的 modles.py

1.先去 modles.py 中定义一个类
class User(modles.Modles):
  	# id int primary_key auto_increment
    id = modles.AutoFiled(primary_key=True)
		
    # username varchar(32)
    username = modles.CharFiled(max_length=32)
    """
    CharFiled 必须指定 max_length 参数,否则会报错
    verbose_name 该参数所有字段都有,表示对字段的解释
    """
    
    # password int
    password = modles.CharFiled(max_length=32)

    

*****************************************************************************************************
2.在 Python 的 Terminal 中输入数据库迁移命令
python3 manage.py makemigrations  # 将操作记录到 migration 文件夹

python3 manage.py migrate  # 将操作真正同步到数据库中

# 只要修改了 modles.py 中有关数据库的代码,就必须重新运行上述两行代码
*****************************************************************************************************

补充:
class Author(models.Model):
    # username varchar(32)
    username = models.CharField(max_length=32, verbose_name='用户名')

    # password int()
    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 中查看即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值