Django+前端+数据库Day3

目录

8连接MySQL数据库

8.1安装第三方模块

8.2ORM-创建数据库

(1)自行创建数据库:启动mysql服务

(2)创建一个数据库

(3)查看你新建的数据库

(4)django 连接数据库

(5)django创建修改删除表

案例:用户管理

1.用户列表

1.url

2.viwes

3.info_list.html

2.添加用户

1.url

2.viwes

3.info_add.html

3.删除用户

1.url

2.viwes



8连接MySQL数据库

8.1安装第三方模块

pip install mysqlclient

8.2ORM-创建数据库

ORM

能帮我们做两件事:

    • 创建、修改、删除数据库中的表(不用sql语句)(!无法创建数据库)
    • 操作表中的数据

(1)自行创建数据库:启动mysql服务

打开cmd,输入mysql -u root -p 输入密码查看是否可以运行成功

(2)创建一个数据库

create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

(3)查看你新建的数据库

show databases;

(4)django 连接数据库

在settings.py文件中进行配置和修改

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'day3',  # 数据库名字

        'USER': 'root',#账户名

        'PASSWORD': '123456',#账户密码

        'HOST': '127.0.0.1',  # 那台机器安装了MySQL

        'PORT': 3306,

    }

}

(5)django创建修改删除表

在models.py文件中

from django.db import models

class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField(default=2)

class Department(models.Model):
    title = models.CharField(max_length=16)

执行命令

python manage.py makemigrations

python manage.py migrate

如果要对表结构进行调整在models.py文件中直接修改即可

在表中新曾列的时,由于表中列可能已有数据,所以新增列必须要指定新增列对应的数据,

1.手动输入值

age = models.IntegerField(default=2)

2.设置可以为空

data = models.IntegerField(null=True, blank=True)

orm

def orm(request):
    # 测试ORM操作表中的数据 2011-11-11  datetime.datetime.now()

    # #### 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=1).delete()
    # UserInfo.objects.filter(id=2).delete()
    # UserInfo.objects.filter(id=3).delete()
    # Department.objects.all().delete()

    # #### 3.获取数据 ####
    # 3.1 获取符合条件的所有数据
    # data_list = [对象,对象,对象]  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)

    return HttpResponse("成功")

案例:用户管理

1.用户列表

1.url

path('info/list/', views.info_list),

2.viwes

def info_list(request):
    # 1.获取数据库中所有的用户信息
    # [对象,对象,对象]
    data_list = UserInfo.objects.all()

    # 2.渲染,返回给用户
    return render(request, "info_list.html", {"data_list": data_list})

3.info_list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>INFO列表</h1>

<a href="/info/add/">添加</a>

<table border="1">
    <thead>
    <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>密码</th>
        <th>年龄</th>
        <th>操作</th>
    </tr>
    </thead>
    <tbody>
    {% for obj in data_list %}
        <tr>
            <td>{{ obj.id }}</td>
            <td>{{ obj.name }}</td>
            <td>{{ obj.password }}</td>
            <td>{{ obj.age }}</td>
            <td>
                <a href="/info/delete/?nid={{ obj.id }}">删除</a>
            </td>
        </tr>
    {% endfor %}
    </tbody>
</table>


</body>
</html>

2.添加用户

1.url

path('info/add/', views.info_add),

2.viwes

def info_add(request):
    if request.method == "GET":
        return render(request, 'info_add.html')
    # 获取用户提交的数据
    user = request.POST.get("user")
    pwd = request.POST.get("pwd")
    age = request.POST.get("age")
    # 添加到数据库
    UserInfo.objects.create(name=user, password=pwd, age=age)
    # 自动跳转
    return redirect("/info/list/")

3.info_add.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>添加用户</h1>
<form method="post">
    {% csrf_token %}
    <input type="text" name="user" placeholder="用户名">
    <input type="text" name="pwd" placeholder="密码">
    <input type="text" name="age" placeholder="年龄">
    <input type="submit" value="提交">
</form>


</body>
</html>

3.删除用户

1.url

   path('info/delete/', views.info_delete),

2.viwes

def info_delete(request):
    nid = request.GET.get('nid')
    UserInfo.objects.filter(id=nid).delete()
    return redirect("/info/list/")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值