您的位置:首页 > 编程语言 > Go语言

django路由系统,FBV,CBV,ORM操作

2018-03-01 21:13 741 查看
一.路由系统
1. Django请求生命周期    
url里的路径对应views里的视图函数,视图函数对应templates里的html文件,
当用户请求时通过路径调用相对应的视图函数,
视图函数返回给用户一个字符串
请求生命周期就是请求先到达url对应关系(匹配) --> 然后到达views的视图函数
--> 返回给用户字符串(或者打开一个HTML文件,读取内容,将内容返回给用户)

2. 创建项目
在命令窗口创建django projcet  --> django-admin startproject 项目名

创建 app应用 先cd到存放的文件夹--> python manage.py startapp cmd
    创建后会发现
mysite(项目)
- mysite(配置文件)
-- wsgi.py  -->  网关接口
-- urls.py  -->  全局的URL配置,路由配置文件
-- settings.py  --> 项目的相关配置
- cmdb(app应用)
-- views.py  -->  视图函数
-- admin.py  -->  用户交互
-- models.py  --> 用于创建数据库表
        templates 文件夹用来存放.html文件
        manage.py 是应用的命令行接口
   3. 配置    
- 模版路径
     - 静态文件路径
     - 需要在setting.py里面设置
     - 设置CSRF  在form表单里写入{% csrf_token %}
4. 编写程序
- urls.py
-- form cmdb import views  --> 先导入app里的views
-- path('func/', views.func),  --> 设置url路径
- views.py
-- def func(request)  -->设置视图函数(为了处理客户请求)
--> request (包含了用户所有的请求数据)
- return HttpResponse('字符串')  --> 返回的是一个字符串
- return render(request,'index.html',{})  --> 渲染器,返回的是一个页面,{}里面可以传值
- return redirect(reverse('URL路径')  -->  就是一个路径跳转,返回的一个路径

二.视图[/b]
1.form表单提交有GET,POST,PUT,DELETE,GEAD,OPTION等等方式
GET:获取数据
POST:提交数据
2.在views.py获取方式
          通过 request.method        #获取提交方式
通过 request.POST.get()     获取数据
通过 request.POST.getlist() 获取列表数据
          通过 request.FILES.get()    获取文件
   3.上传文件
        
        -在html里面传入文件要在form表头内写入: enctype="multipart/form-data"  # 文件的传输配置
       
        - <input type="file" name='fafa'>  --> 在HTML里面上传文件
- fafa = request.FILES.get('fa')   --> 在views.py通过这个方法获取文件,但是它保存在了files里面
--> 通过查看它的类型发现它是一个类,导入这个类,迭代类的方法 .chunks() ,这个方法里面存放了上传的文件内容

--> 我们可以通过os写入一个文件里面

--> 先导入os模块

f = open(fa,mode="wb") # 创建并修改这个文件

for i in fafa.chunks(): # 将上传的内容通过迭代

f.write(i) # 写入f文件
f.close() # 关闭文件

--> 这时会在项目中发现一个一个文件,这个文件就是获取的文件









  4.FBV(function base view) & CBV    1.FBV 在url.py index -> 对应的一个函数名 在views.py def 函数(request)





上面这俩张图就是一个简单的FBV

 =============
    2.CBV
    /index/ -> 对应函数名 /index/ -> 对应类,会执行这个类里面指定的方法 方法和FBV一样,但是在views.py里面创建的是一个类, 并导入from django.views import View 继承View urls.py要写 path('index',类.as_view()), 其余与FBV一样 包括提交获取 原理是 通过View父类的dispatch方法 反射(相当于有一个dispatch函数,在这个函数里面封装了一些方法) # 建议:俩者都用





上面这俩张图就是一个简单的CBV,提交的时候通过父类的dispatch会判断并调用get.post方法

三.模版 - 模版语言 里面可以有for循环,当我们的渲染器render返回的是

比如:
-- return render(request,'index.html',{'list':[1,2,3,4,5]})

-- {% for i in {{list}} %} --> 像这样用双花括号括起来的标签称为变量标签,里面用于显示对象的内容
                                  --> 里面含有%的称为块标签,用于向HTML模版中插入循环或判断这样的逻辑

  <p> i <p/> # 这样就将list里的内容遍历的出来

 -- {% endfor %}      

# 注意: 必须说明结束 通过索引取 -- {{list.0}} --> 在django里面索引是用点: .0 .1 .2
四.ORM操作 原生的sql语句和ORM方法的对应关系   

select* from tb where id>1 ==> models.tb.objects.filter(id__gt=1)  

 id__gt=1 --> id>1   

 id__lt=1 --> id<1

创建类:
1. 根据类自动创建数据库表

models.py 在里面写类 需要继承models.Model
字符串类型CharField
数字
时间 DateTimeField
二进制
自增(primary_key=True) 必须加
常用的字段参数:
null -> 是否为空
default ->默认值
primary_key ->主键
db_column -> 列名
db_index -> 索引
unique -> 唯一索引
unique_for_date ->对时间的索引
unique_for_month ->对月份的索引
unique_for_year ->对年份的索引
auto_now ->创建时候,自动生成时间
注意: objects.filter().first().update()
auto_now_add ->更新时候,自动更新称当前时间
choices -> 在django admin中显示下拉框,避免连表查询
blank -> 在django admin中是否为空
verbose_name -> 在django admin中列名中文
editable -> 在django admin中是否被编辑
error_messages -> 在django admin中显示错误信息
help_text -> 在django admin中显示帮助信息,提示
validators -> 在django form自定义验证机制
外表:
models.ForeignKey('关联表名,类名','关联字段')
创建了以后数据库有一个加_id的字段(里面封装了对象) 有一个字段

创建Django用户: createsuperuser
执行makemigrations appname创建脚本,里面含有生成数据库表的数据
执行migrate appname 生成数据库表
2. 根据类对数据库表中的数据进行各种操作,根据创建的表进行数据库操作
3. models.类.objects 可以对数据库进行操作
增: models.类.objects.create() 增加

另一种方式: a = models.类()
a.save()
查: models.类.objects.all() 把表里的所有东西都获取
返回的是一个QuerySet类型,列表 --> 可以通过循环获取处理
models.类.objects.filter(条件) 过滤,也就是查询
返回的也是一个QuerySet类型,列表 --> 通过循环获取
models.类.objects.filter(条件).first() --> 获取的第一个符合条件的数据
models.类.objects.filter(条件).count() --> 获取个数
删: models.类.objects.all().delete() 删除整个表
models.类.objects.filter(条件).delete() 查询到然后删除固定数据
改: models.类.objects.all().update(内容) 修改全部
models.类.objects.filter(条件).update(内容) 修改指定
4. 一对多操作
a.外键
b.外键字段_id
c.根据外键_id创建数据
d.循环操作

作业:用户管理:
1.俩张表 foreignKey 关系
2.用户组增删改查
3.用户的增删改查
- 添加必须是模态对话框
- 删除也必须是模态对话框
- 编辑 有默认提示,必须显示默认值
4.页面好看
5.预习 http://www.cnblogs.com/wupeiqi/articles/4938499.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: