美文网首页
Day2-课堂笔记-Django2

Day2-课堂笔记-Django2

作者: 晓晓的忍儿 | 来源:发表于2018-09-11 10:00 被阅读0次

    1.model.py创建学生类student

    from datetime import datetime
    
    from django.db import models
    
    
    class Student(models.Model):
        # def __init__(self, name, age=None, sex=None):
        #     super().__init__()
        #     self.s_name=name
        #     self.s_age=age if age else self.s_age
        #     self.s_sex=sex if sex else self.s_sex
        #     # 创建时间
        #     self.creat_time=datetime.now()
        #     self.operate_time=datetime.now()
        #自增字段
        # s_id=models.AutoField()
        #字符串
        s_name=models.CharField(max_length=10,unique=True,verbose_name='姓名')
        # int类型
        s_age=models.IntegerField(default=16,verbose_name='年龄')
        #布尔类型
        s_sex=models.BooleanField(default=1,verbose_name='性别')
        #创建时间,用于第一次时间的创建
        creat_time=models.DateTimeField(auto_now_add=True,verbose_name='创建时间')
        #修改时间
        operate_time=models.DateTimeField(auto_now=True,verbose_name='修改时间')
        #小数,精确整数和小数位数
        #EmailField()
        # 图片
        # ImageField
        # 在数据库中改变字段名字
        # db_column
        #s_name=models.CharField(db_column=''xxx',max_length=10,unique=True,verbose_name='姓名')
        class Meta:
            db_table='student'
    

    2.对数据进行处理

    1)增加学生

    方法1:
    Student.objects.create()
    方法二:
    stu=Student()
    stu.s_name='xxx'
    stu.save()
    方法三:
    stu=Student(x1,x2,...)
    stu.save()

    2)查询学生

    • all :查询所有数据
    • filter:获取的结果为queryset(查询集),结果可以返回空,一个或多个对象
    • get() 获取的结果为object(单个)对象,如果没有满足条件的对象获取会报错,获取的对象超过一个也会报错
    • 注意:get()能不用就不用,最后就不要用
    • exclude :不包含 获取不包含该对象以外的所有对象
    • order_by :排序 +:升序 -:降序
    • values-->获取单个字段
    • first:获取queryset(查询集)中的第一个对象
    • last:获取queryset(查询集)中的最后一个对象
    • 切片--->前面那个下标要考虑取值范围,后面那个不用
    • 模糊查询:contains==>'%x%' startswith==>'x%' endswith==>'%x'
    • isnull/isnotnull 判断是否为空/是否不为空
    • in 判断在范围之内
    • pk:与id功能相同
    • 比较运算:gt(大于) gte(大于等于) lt(小于) lte(小于等于)
    • 逻辑运算:Q(条件) | Q(条件) 逻辑或 ;Q(条件) & Q(条件) 逻辑与 ;~Q(条件) 逻辑非

    3)修改学生

    方法一:
    stu=Student.objects.get(条件)
    stu.字段=修改值
    stu.save()
    方法二:
    Student.objects.filter(条件).update(修改字段=修改值)

    4)删除学生

    stu=Student.objects.get(条件)
    stu = Student.objects.filter(条件).first()
    stu.delete()

    from django.db.models import Q
    from django.http import HttpResponse
    from django.shortcuts import render
    
    from app.models import Student
    
    
    def create_stu(request):
        # 创建学生信息
        # 引入ORM概念:对象关系映射 insert into student value()
        # 第一种
        # Student.objects.create(s_name='小王')
        # 第二种
        # stu=Student()
        # stu.s_name='小坑'
        # stu.save()
        # 第三种(尽量少用,问题很多)
        # stu=Student('小菜',20,0)
        # stu.save()
        return HttpResponse('创建学生方法')
    
    
    def select_stu(request):
        '''
        查询数据
        all :查询所有数据
        filter:获取的结果为queryset(查询集),结果可以返回空,一个或多个对象
        get() 获取的结果为object(单个)对象,如果没有满足条件的对象获取会报错,获取的对象超过一个也会报错
        注意:get()能不用就不用,最后就不要用
        exclude :不包含    获取不包含该对象以外的所有对象
        order_by :排序  +:升序   -:降序
        values-->获取单个字段
        first:获取queryset(查询集)中的第一个对象
        last:获取queryset(查询集)中的最后一个对象
        切片--->前面那个下标要考虑取值范围,后面那个不用
        模糊查询:contains==>'%x%'    startswith==>'x%'   endswith==>'%x'
        isnull/isnotnull 判断是否为空/是否不为空
        in  判断在范围之内
        pk:与id功能相同
        比较运算:gt(大于) gte(大于等于) lt(小于) lte(小于等于)
        逻辑运算:Q(条件) | Q(条件) 逻辑或 ;Q(条件) & Q(条件) 逻辑与  ;~Q(条件) 逻辑非
    
    
        '''
    
        # all :所有
        # select * from student;
        # stus=Student.objects.all()
    
        # filter:获取的结果为queryset,可以返回空,一条或多条
        # select * from student where s_name='小李'
        # stus=Student.objects.filter(s_name='小李')
        # 查询年龄等于16,年龄不存在时,结果空
        # stus=Student.objects.filter(s_age=16)
    
        # get() 获取的结果为object对象,获取不成功会报错,结果超过一条也会报错
        # 获取年龄等于20的学生,获取对象时,如果满足的对象超过一个会报错
        # stus=Student.objects.get(s_age=18)
        # stus=Student.objects.get(id=100)
    
        # 查询多条
        # stus=Student.objects.filter(s_age=16).filter(s_name='小李')
        # stus=Student.objects.filter(s_age=16,s_name='小李')
    
    
        # exclude :不包含
        # 查询姓名不等于小红的学生信息
        # stus=Student.objects.exclude(s_name='小李')
    
        # order_by :排序  +:升序   -:降序
        #排序,安照id升序/降序===>asc/desc
        # stus=Student.objects.all().order_by('id')
        # stus = Student.objects.all().order_by('-id')
    
        # values-->获取单个字段
        # stus=Student.objects.all().values('id')
        # return HttpResponse(stus)
    
        # get(),first()-->获取单个对象
        # stus=Student.objects.get(id=2)
        # stus=Student.objects.filter(id=100).first()
        # return HttpResponse(stus)
    
        #first(),last()-->获取单个对象
        # stus=Student.objects.all().order_by('id').last()
        # stus = Student.objects.all().order_by('-id').first()
        # stus = Student.objects.all().order_by('-id')[0]
        # return HttpResponse(stus.id)
    
        # 切片--->前面那个下标要考虑取值范围,后面那个不用
        # stus = Student.objects.all().order_by('-id')[:100]
    
        # 模糊查询
        # select * from student name like '%李%'
        # stus=Student.objects.filter(s_name__contains='哈')
        # select * from student name like '小%'
        # stus = Student.objects.filter(s_name__startswith='小')
        # select * from student name like '%王'
        # stus = Student.objects.filter(s_name__endswith='王')
    
        #isnull/isnotnull判断是否为空
        # stus = Student.objects.filter(s_name__isnull=False)
        # stus = Student.objects.filter(s_name__isnotnull=False)
    
        # in  判断在范围之内
        # stus=Student.objects.filter(id__in=[1,2,6])
    
        # 年龄大于16
        # stus = Student.objects.filter(s_age__gt=16)
    
    
        #pk
        # stus = Student.objects.filter(id=3)
        # stus=Student.objects.filter(pk=3)
    
        # Q(),查询姓名叫小花的,或者年龄为18
        # stus=Student.objects.filter(Q(s_name='小李') | Q(s_age=20))
        # stus = Student.objects.filter(Q(s_name='小李') & Q(s_age=20))
        # 查询姓名不叫小花的,或者年龄为18
        # stus = Student.objects.filter(~Q(s_name='小李') | Q(s_age=20))
    
        # 获取学生姓名
        # 方法一
        # for stu in stus:
        #     print(stu.s_name)
        # 方法二
        # stu_names=[stu.s_name for stu in stus]
        # print(stu_names)
        # return HttpResponse(stu_names)
    def delete_stu(request):
        #删除
        stu=Student.objects.get(pk=1)
        stu = Student.objects.filter(pk=1).first()
        stu.delete()
        return HttpResponse('删除')
    def update_stu(request):
        #更新
        # 方法一
        stu=Student.objects.get(pk=3)
        stu.s_name='小将'
        stu.save()
        # 方法二
        Student.objects.filter(id=2).update(s_name='哈哈')
        return  HttpResponse('修改')
    

    3.urls.py设置url

    from django.conf.urls import url
    from django.contrib import admin
    from app import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url('create_stu/',views.create_stu),
        url('select_stu/',views.select_stu),
        url('delete_stu/',views.delete_stu),
        url('update_stu/',views.update_stu),
    ]
    

    相关文章

      网友评论

          本文标题:Day2-课堂笔记-Django2

          本文链接:https://www.haomeiwen.com/subject/njsygftx.html