美文网首页
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