django--orm映射和CRUD操作

orm映射

O: object , R: relation , M : mapping, 对象关系映射,使用面向对象的思想来操作数据库。
python中的一个类对应对应数据库中的一张表格。
python中的一个对象对应表格中的一条记录。
Python中的类的属性 对应 表格中的字段。

CRUD操作

配置数据库

Django参考文档:
https://docs.djangoproject.com/zh-hans/2.0/ref/settings/
django--orm映射和CRUD操作_第1张图片
1.创建项目后运行生成db.sqlite3
django--orm映射和CRUD操作_第2张图片
2.编写app01里的models.py

from django.db import models

# Create your models here.
# 创建模型类
# 首先创建models.Model类
class Person(models.Model):
    id=models.AutoField(primary_key=True) #主键自动增长,int
    name=models.CharField(max_length=32) #字符串类型
    age=models.IntegerField() #整型
    height=models.DecimalField(max_digits=5,decimal_places=2) #174.33
    weight=models.FloatField() #身高
    birthday=models.DateField() #日期格式 YYYY-MM-DD

3.生成迁移文件和生成表
命令行: python manage.py makemigrations
python manage.py migrate

4.查看生成的数据库表格
django--orm映射和CRUD操作_第3张图片
django--orm映射和CRUD操作_第4张图片

查询用户

# 获取所有用户

def all_person(request):
    # 1.从数据库中获取所有的用户
    ret=models.Person.objects.all()
    # print(ret)#, ,
    # , ]>

    # print(type(ret))#
    # print(ret[1].name) #df
    # 2.返回页面
    return render(request,'app01/all_person.html',{'person_all_list':ret})
    # return HttpResponse('sdfdf')

删除用户

# 删除用户

def delete_person(request):
    # 1.获取 id
    id=request.GET.get('id')
    # 2.删除数据库中对应的记录
    models.Person.objects.get(id=id).delete()
    # 3.重定向到 所有用户页面
    return redirect('/app01/all_person/')   #重定向会再次发出请求
    # return render(redirect,'app01/all_person.html')

添加用户

def add_person(request):

    if request.method == 'POST':
    # 1.获取表单提交过来的数据
        name=request.POST.get('name')
        age=request.POST.get('age')
        height=request.POST.get('height')
        weight=request.POST.get('weight')
        birthday=request.POST.get('birthday')
        print(name)
    # 2.保存到数据库
        models.Person.objects.create(
            name=name,
            age=age,
            height=height,
            weight=weight,
            birthday=birthday,
        )
    # 3.响应
        return redirect('/app01/all_person/')

    return render(request,'app01/add_person.html')

修改用户

def update_person(request):
    if request.method=='GET':
        id=request.GET.get('id')
        person_obj=models.Person.objects.get(id=id)
        return render(request,'app01/update_person.html',{'person_obj':person_obj})
    else:
        person_id=request.POST.get('person_id')
        name = request.POST.get('name')
        age = request.POST.get('age')
        height = request.POST.get('height')
        weight = request.POST.get('weight')
        birthday = request.POST.get('birthday')
        person_obj=models.Person.objects.get(id=person_id)
        person_obj.name=name
        person_obj.age=age
        person_obj.height=height
        person_obj.weight=weight
        person_obj.birthday=birthday
        person_obj.save()
        return redirect('/app01/all_person/')
 <form action="/app01/update_person/" method="post">
        <input type="hidden" name="person_id" value="{{ person_obj.id }}">
    {% csrf_token %}
    <p>
        用户名: <input type="text" value="{{ person_obj.name }}" name="name">
    p>
    <p>
        年龄: <input type="text" value="{{ person_obj.age }}" name="age">
    p>
    <p>
        身高: <input type="text" value="{{ person_obj.height }}" name="height">
    p>
    <p>
        体重: <input type="text" value="{{ person_obj.weight }}" name="weight">
    p>
    <p>
        生日: <input type="text" value="{{ person_obj.birthday|date:'Y-m-d' }}" name="birthday">
    p>
    <p>
        <input type="submit" value="提交">
    p>
    form>

    <a href="/app01/all_person">编辑a>

你可能感兴趣的:(django)