Django 模块介绍

Model模块:
ORM:django和数据库进行数据交互重要框架,它让我们不用再需要面向数据库编写代码,而是以面向对象的方式操作数据库

定义模型类:
1.1模型类必须继承自Model类,创建模型类就是在数据库中创建数据表,django会自动为表创建一个主键列,如果自己设置某些属性为主键后django不会再创建主键,默认主键属性为id,可以用pk代替
1.2属性命名限制,不能使python的关键字,不能使用连续的下划线,这是django的查询方式
定义属性需要制定字段类型, 格式属性=models.字段类型(选项)
常用字段类型:字符串CharField(max_length=字符长度), 整数 IntegerField ,自动增长 AutoField , 日期DateField(auto_now=False,auto_now_add=False),前者是每次保存对象时打印当前时间后者是显示第一次创建的时间,显示时间戳,二者只能选其一
1.3关系字段类型:一对多: ForeignKey, 多对多:ManyToManyField ,一对一:OneToOneField
1.4 可以设置元选项更改数据库的表名,在模型类中定义Meta类,直接写db_table= ‘指定表名’

2模型的实例方法
2.1 save()将对象保存到数据库表中
2.2 delete()将对象从数据库表中删除

3 查询集
3.1 表示从数据库获取的对象集合,它有两大特性:惰性执行,创建的时候不会执行,调用数据才会执行缓存,查询集的结果被保存下来,再次查询使用缓存数据
3.2返回的集合可以使用过滤器:
(1)all()返回所有数据
(2)filter(条件) 返回满足条件的数据
(3)exclude():返回满足条件之外的数据
(4)order_by(): 排序
(5)get():返回满足条件的对象
(6)count():返回当前查询的总条数
(7)exists():判断查询集中是否有数据,如果有返回True,否则返回False

4 字段查询:实现sql中where功能
4.1运算符号
(1)exact:表示判等
(2)contains: 表示包含
(3)startswith, endswith:以指定值开头或结尾
(4)isnull:是否为Null
(5)year…日期类型的属性

list=BookInfo.books.filter(id__exact=1)可简写为:
list=BookInfo.books.filter(id=1)

View模块:
1.负责接收HttpRequest对象,对客户端发送过来的url进行正则匹配,让相应的函数进行信息处理
2 视图就是在View中定义的函数 试图函数的参数必须包含HttpRequest实例,必须返回一个HttpResponse对象

3 常见响应错误
3.1 404错误 错误的地址
3.2 500错误 服务器出错
3.3 400错误 语法错误

4 HttpRequest对象 django在接收到http协议后会自己创建一个request对象
4.1request调用以下方法查看属性
(1)path :一个字符串,请求页面的完整路径
(2)method:字符串,请求使用的方法,通常为get或者post
(3)GET:get请求方式的所有参数
(4)POST:post请求方式的所有参数
(5)COOKIES: 所有的cook信息
(6)session: url携带的session信息

5 HttpResponse对象 试图接受请求处理完之后必须返回一个HttpReponse对象或者它的子对象5.1一般情况下直接返回它的子对象,renderrender(request对象,模板,返回的数据)
5.2 如果浏览器发起ajax请求时,服务器就需要返回json数据

浏览器发送请求–>url匹配返回模板–>渲染模板,加载jquery文件绑定点击事件–>
–>点击按钮使用get发送ajax请求–>view匹配url,处里请求返回数据–>
–>客户端使用get的回掉函数填充数据

6 重定向
6.1 完成一项操作后条状页面,这里的跳转是服务器完成的跳转,不需要用户操作
6.2 django提供了HttpResponseRedirect对象来实现重定向功能,状态码是302
6.3 django也提供了简写函数 redirect,在django.shortcuts模块中

7 状态保持
7.1 浏览器请求服务器是无状态的,无法知道用户之前做过什么,有时需要用户的浏览状态,比如是否登陆
7.2 实现状态保持有两种方式:在客户端使用cookie 在服务器端使用session
7.3 cookie
(1)cookie 会记录用户的基本信息,浏览器会把它保存到某一个目录下
(2) 下次用户发送请求时会带上cookie信息,服务器会根据cookie识别用户是否合法以及是否需要重新登录
(3)cookie以键值对的格式进行信息的储存
(4)常用cookie推送广告,记住用户名,购物网站的购物车
7.4 session
(1) session是把保存敏感数据,重要信息保存在服务器端
(2) 它依赖于cookie,服务器保存session数据时cookie必须保存一个session的信息
(3)存储session时,session的id必须与cookie中的sessionid相同
(4)设置过期时间 set_expiry(value)这是个方法,直接调用,value为None表示django自带的最大时间,
如果为0表示浏览器关闭就过期

Template模板:

1 模板实现了逻辑处理view和现实内容的template的分离,一个试图可以调用任意模板,一个模板可供多个view使用

2 模板包含两个部分:、
静态部分,包含html,css ,js 等
动态部分 模板语言
2.1 模板语言 简写DTL
(1)变量:{{变量}}
(2)标签:{%代码段%}
(3)过滤器:变量|过滤器:参数
(4)注释:{#…#}

3 模板继承,主要应用网站头部,尾部信息
3.1父模版
{%block 名称%}
预留区域,可以编写默认内容,也可以没有默认内容
{%endblock 名称%}
3.2 子模板 继承父模板
第一行{% extends 父模板名称%}
填充父模板预留的区域
{%block 名称%}
实际填充内容
{{block.super}} 用来调用复模版中的内容
{%endblock 名称%}

4 html转义,浏览器会对html标签自动转义,类似论坛里面用户输入的html这时候就不能转义
4.1关闭转义
(1){{不用转义的变量名|safe}}
(2)设置一段代码都禁用转义
{%aurosescape off%}
。。。。
{%endautoescape%}

URL模块:

是django的路由系统,作用就是使views里面处理数据的函数与请求的url建立映射关系。使请求到来之后,根据urls.py里的关系条目,去查找到与请求对应的处理方法,从而返回给客户端http页面数据

1.url()函数可以传递4个参数,其中2个是必须的:regex和view,以及2个可选的参数:kwargs和name。下面是具体的解释:
regex:regex是正则表达式的通用缩写,它是一种匹配字符串或url地址的语法。Django拿着用户请求的url地址,在urls.py文件中对urlpatterns列表中的每一项条目从头开始进行逐一对比,一旦遇到匹配项,立即执行该条目映射的视图函数或二级路由,其后的条目将不再继续匹配。因此,url路由的编写顺序至关重要!
view:当正则表达式匹配到某个条目时,自动将封装的HttpRequest对象作为第一个参数,正则表达式“捕获”到的值作为第二个参数,传递给该条目指定的视图。如果是简单捕获,那么捕获值将作为一个位置参数进行传递,如果是命名捕获,那么将作为关键字参数进行传递。
kwargs:任意数量的关键字参数可以作为一个字典传递给目标视图。
name:对你的URL进行命名,可以让你能够在Django的任意处,尤其是模板内显式地引用。相当于给URL取了个全局变量名,你只需要修改这个全局变量的值,在整个Django中引用它的地方也将同样获得改变。这是极为古老、朴素和有用的设计思想,而且这种思想无处不在。

admin模块:
Django的管理员模块是Django的标准库django.contrib的一部分。这个包还包括其它一些实用的模块:
django.contrib.auth
django.contrib.sessions
django.contrib.comments

auth模块:
auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理。
auth可以和admin模块配合使用, 快速建立网站的管理系统。
在INSTALLED_APPS中添加’django.contrib.auth’使用该APP, auth模块默认启用
https://www.cnblogs.com/ccorz/p/6358074.html(Django权限系统auth模块详解)

form 模块:
表单模块,处理表单,可自定义表单字段和数据类型

social-auth-app-django模块:
social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块
(https://www.cnblogs.com/adc8868/p/7665864.html)

第三方模块(非django内置模块):
django-guardian
Django默认并没有提供对Object级别的权限控制,而只是在架构上留了口子。可以使用第三方模块django-guardian来实现Object level permission。


引用原文:
https://blog.csdn.net/despairvip/article/details/78463985

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值