cao_xiao_qin's blog System Research

Djangoday02

2018-11-29

阅读:


一、创建项目day02

1.进入虚拟环境:source activate
2.创建代码的项目:pyhton manage.py startproject day02
3.更改设置__init__.py设置

    import pymysql  
	 pymysql.install_as_MySQLdb()   

4.更改setting.py设置

 DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'dj8',
    'USER': 'root',
    'HOST': '127.0.0.1',
    'PORT': 3306,
    'PASSWORD': '123456'
}
}   
LANGUAGE_CODE = 'zh-hans'

 二、创建应用    
` python manage.py startapp <文件名>`
#### 我先创建了一个名为app的应用:   
`python manage.py startapp app`    
然后在app里面的models.py里定义东西  

   
from django.db import models  
class Student(models.Model):  
     定义s_name字段最长不超过6个字符    
     unique=True 唯一      
    s_name = models.CharField(max_length=6, unique=True)
          
     定义s_age字段    
    s_age = models.IntegerField(default=18)
      
     定义s_gender字段  
    s_gender = models.BooleanField(default=1) 
      
      定义create_time字段 创建时间   
    create_time = models.DateTimeField(auto_now_add=True)
      
    #### 定义operate_time字段 修改时间 auto_now为每次修改 保存每次修改的时间   
    operate_time = models.DateTimeField(auto_now=True)    
	
	class Meta:  
        #### 定义模型迁移导数据库的表名  
        #### 表名为student  
        db_table = 'student'  

在day02里settings。py里修改:

INSTALLED_APPS = [     
    'django.contrib.admin',   
    'django.contrib.auth',   
    'django.contrib.contenttypes',   
    'django.contrib.sessions',    
    'django.contrib.messages',   
    'django.contrib.staticfiles',   
    'app', ---为添加的字段  
]    

在urls.py里导入views

from app import views

urlpatterns = [
    # 127.0.0.1/create_stu
    url(r'^create_stu/', views.create_stu),
]

(生成迁移文件)
命令:python manage.py makemigrations
(执行迁移文件)
命令:python manage.py migrate

在views里面导入student
from app.models import Student

在views里创建你需要的

def create_stu(request):    
####  创建学生  
stu = Student()
stu.s_name = 'caocao'
stu.s_gender = '0'
stu.s_age = 18
stu.save()

#### 第二种创建学生
Student.objects.create(s_name='tos')
Student.objects.create(s_name='xiaoh')
Student.objects.create(s_name='xia')
Student.objects.create(s_name='cp3')
Student.objects.create(s_name='kobe')
return HttpResponse('创建成功')
``` 在网络查看   `127.0.0.1:8080/路由地址`    def sel_stu(request):  
 实现查询所有对象信息 all()  

stus = Student.objects.all()

 filter()过滤
stus = Student.objects.filter(s_name='Tom')

 first()获取第一个  
 last()获取最后一个  
stus = Student.objects.filter(s_name='caocao').first

 get只能返回一个值,返回多个值或不存在的值就会报错
stus = Student.objects.get(s_name='caocao')

 同时查询多个条件的语句
stus = Student.objects.filter(s_age=18, s_gender=0)   

 模糊查询like '%xx%' '_xx%'
 包含c的
stus = Student.objects.filter(s_name__contains='c')  

 以x开头
stus = Student.objects.filter(s_name__startswith='x')


 大于gt/gte大于等于  小于lt/lte小于等于
stus = Student.objects.filter(s_age__gt=16)

 排序 order_by()
 升序
stus = Student.objects.order_by('id')
 降序
stus = Student.objects.order_by('-id')  

 查询不满足条件数据 exclude()
stus = Student.objects.exclude(s_age=19)


 统计个数count()
stus_count = stus.count()
print(stus_count)


 统计个数len()
 print(len(stus))
 stus.values()查看所有

 id=pk
 查询id=2的数据
stus = Student.objects.filter(id=9)
print(stus.values())

stu_names = [stu.s_name for stu in stus]
print(stu_names)
return HttpResponse('查询成功')

ORM对象关系映射

-- object-relational-mapping

all(): 查询所有语句 frist(): 拿到第一数据
last():拿到最后一个数据
all() 返回所有数据

filter() 返回符合条件的数据

exclude() 过滤掉符合条件的数据

order_by() 排序

values() 一条数据就是一个字典,返回一个列表
count():返回当前查询集中的对象个数

exists():判断查询集中是否有数据,如果有数据返回True,没有返回False
get():只返回一个值 如果返回多个值或没有就会报错
模型名.objects.all()[0:5] 小标不能为负数 # 相当于limit限制查询集,

agregate()函数返回聚合函数的值

Avg:平均值

Count:数量

Max:最大

Min:最小

Sum:求和

例如: Student.objects.aggregate(Max(‘age’))


上一篇 Django