DJango 学习(6)—— Django 数据库连接以及简单的前后端数据交互

本文介绍如何在Django中链接数据库,利用ORM进行字段和数据的增删改查操作,并展示了前后端数据交互的实现,包括代码示例和运行演示。
摘要由CSDN通过智能技术生成

DJango 学习(6)—— Django 数据库连接以及简单的前后端数据交互

pycharm 链接数据库

"""
三个位置
	右侧上方 database
	左下方 database
	配置里面的 plugins 插件搜索
	
	重装 pycharm
	
pycharm 可以充当很多数据库的客户端
"""

请添加图片描述

django orm

"""
orm: 对象关系映射
作用:能够让不会sql 语句的小白也可以通过 python 面向对象的代码简单快捷的操作数据库
不足:封装程度太高,有时候 sql 语句的效率偏低 需要自己写 sql 语句

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

应用 models.py 文件
"""

# 0. setting.py 配置文件修改连接的数据库
# 项目指定的数据库
DATABASES = {
   
    'default': {
   
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': "django.db.backends.mysql",
        'NAME': 'test518',
        "HOST": "127.0.0.1",
        "PORT": 3306,
        "USER": "root",
        "PASSWORD": ""
    }
}

__init__ 文件
	import pymysql
	pymysql.install_as_MySQLdb()

# 1. 先去 models.py 文件中书写一个类
class User(models.Model):
    # 相当于 id int primary key auto_increment
    id = models.AutoField(primary_key=True)
    # name char(32)
    name = models.CharField(max_length=32)
    # password int
    password = models.IntegerField()
    
# 2. 数据库迁移命令
1. python manage.py makemigrations 将操作记录记录到小本本上(makemigrations 文件夹)

2. python manage.py migrate 将操作真正同步到数据库中
# 只要你修改了 models.py 中和数据库有关的代码,你就必须重新执行上述的两条命令

# 如果创建表时,不定义字段主键时,orm 会自动创建一个名为 id 的主键

# Create your models here.

class User(models.Model):
    """
    CharField 必须要有 max_length 参数,不指定会报错
    verbase_name 该参数是所有字段都有的,就是用来对字段的解释
    """
    # 相当于 id int primary key auto_increment
    id = models.AutoField(primary_key=True, verbose_name="主键")
    # name char(32)
    name = models.CharField(max_length=32,verbose_name="用户名")
    # password int
    password = models.IntegerField(verbose_name="密码")

在这里插入图片描述
在这里插入图片描述
请添加图片描述
在这里插入图片描述

字段的增删改查

# 字段的增加
	1. 直接在终端内给出 默认值
    2. 该字段可以为空,或者直接设置默认值
        info = models.CharField(verbose_name="个人简介", max_length=32, null=True) # 该字段可以为空
        hobby = models.CharField(max_length=32, verbase_name="爱好", default="study") # 直接设置默认值
        
# 字段的修改
	直接修改代码,执行数据库迁移的两条命令即可
    
# 字段的删(不要轻易操作)
	将对应的字段注释,并执行数据库迁移命令
    执行完毕之后,数据消失
    
"""
在操作 models.py 文件的时候一定要细心
	千万不要注释一些字段
	执行迁移命令之前最好先检查一下自己写的代码
"""

数据的增删改查

# 查询
res= models.User.objects.filter(name=username)

user_obj = models.User.objects.all()
return render(request, "usrelist.html", locals())
"""
返回值暂时当作 列表套对象的格式
它也支持索引取值  切片操作 但是不支持负数索引
它也不推荐索引的方式取值
user_obj = models.User.objects.filter(name=username).first()
"""
filter 可以携带多个参数,参数与参数之间默认是 and 关系,可以把 filter 当作 where

# 增加
	res = models.User.objects.create(name=username, password=password)
        # 返回值是当前被创建的对象本身
# 第二种
        user_obj = models.User(name=username, password=password)
        user_obj.save() # 保存数据

数据的查、改、删

# 先将数据库中的数据全部展示到前端,然后给每一个数据两个按钮,一个编辑一个删除

# 编辑功能
	# 点击编辑按钮朝后端发送编辑数据的请求
    """
    如何告诉后端用户想要编辑哪条数据
    	将编辑按钮所在的那一行数据的主键值告诉后端
    	/url/?user_id={
   { user_obj.id }}
    """
    # 后端查询出用户想要编辑的数据并展示
    
    def useredit(request):
    	edit_id = request.GET.get("id")

    	user_obj = models.User.objects.filter(id = edit_id).first()

        if request.method == "POST":
            name = request.POST.get("username")
            password = request.POST.get("password")

            # 编辑数据
            # 方法一
            # 批量操作,只更新修改的数据,效率较高
            # models.User.objects.filter(id=edit_id).update(name=name, password=password)

            # 方法二,效率较低,将数据全部更新一遍,无论该字段是否被修改
            user_obj.name = name
            user_obj.password = password
            user_obj.save()

            # 跳转页面
            return redirect("/userlist/")

        return render(request, "useredit.html", locals())

# 删除功能
	跟编辑功能类似
    def userdelete(request):
    	delete_id = request.GET.get("id")
    
    	# 删除数据
    	models.User.objects.filter(id=delete_id).delete()

    	return redirect
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值