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




    
    Title


INFO列表

添加 {% for obj in data_list %} {% endfor %}
ID 姓名 密码 年龄 操作
{{ obj.id }} {{ obj.name }} {{ obj.password }} {{ obj.age }} 删除

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




    
    Title


添加用户

{% csrf_token %}

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/")

你可能感兴趣的:(django,数据库,python)