1. 课程介绍
- 数据类型
- 函数
- 面向对象三大特性:继承,封装,多态
- socket:本质传输字节;所有网络通信都基于socket
- 数据库设计:单表、FK、M2M (自己作业:自己领域设计表,相亲网站)
- 会用:html/css/js/bootstrap
2. Http知识 基于Socket 浏览器(格式一):
Web服务器(格式一): MySQL客户端(格式二):
MySQL服务端(格式二): 本质:
socket = socket.socket()
socket.connect((ip,端口))
socket.sendall(b'87ljas9802jlksjdf098jlksdf09') 浏览器发送GET请求数据格式:
socket = socket.socket()
socket.connect((ip,端口))
socket.sendall(b'GET /index/?name=xxx&age=11 http1.1\r\nAccept:text/html\r\nAccept-Encoding:gzip, deflate\r\nCookie:UM_distinctid=15d274\r\n\r\n') request.GET.get('name') 浏览器发送POST请求数据格式:
socket = socket.socket()
socket.connect((ip,端口))
socket.sendall(b'POST /index/?name=xxx&age=11 http1.1\r\nAccept:text/html\r\nAccept-Encoding:gzip, deflate\r\nCookie:UM_distinctid=15d274\r\n\r\na1=123&a2=666&a3=xx') Django加工POST请求的数据,
判断用户是否传递的是Django可以向request.POST中解析的数据?读取请求头Content-Type: application/x-www-form-urlencoded,那么就去解析request.body中的值,放置到request.POST中
a1=123&a2=666&a3=xx
request.POST.get('name')
request.body b"a1=123&a2=666&a3=xx" Django加工POST请求的数据:{a1:123,a2:567}
request.POST 空
request.body b"{a1:123,a2:567}" Http协议
- 请求头和请求体分割:\r\n\r\n
- 请求体之间:\r\n
- GET无请求体
- 无状态,短连接:socket请求响应断开
- 请求头代表的意义
- user-agent:来源
- referer: 防盗链
- content-type:请求体是什么格式? 3. Django请求生命周期 wsgiref:
函数版本:
from wsgiref.simple_server import make_server def run_server(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ] if __name__ == '__main__':
httpd = make_server('127.0.0.1', 8000, run_server) # 请求一旦到来:run_server(..)
httpd.serve_forever() 类版本:
from wsgiref.simple_server import make_server class WsgiHandler(object): def __call__(self,environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ] if __name__ == '__main__':
obj =WsgiHandler()
httpd = make_server('127.0.0.1', 8000, obj) # 请求一旦到来:obj(..)
httpd.serve_forever() # 类() -> __init__
# 类()() -> __call__ 生命周期:图 注意:
渲染工作在Django中执行完成后,字符串返回给浏览器。
但是:js,css额外再发一次请求仅获取静态文件 4. 问题:
a. TemplateDoesNotExist
- 写错误
- 配置
- 文件夹 b. 静态文件404
- 写错误
- 配置
- 文件夹 5. Django所有知识点:
知识点:
1. 路由规则
- /index/ func
- /\d+/ func()
- /?P<name(\d+)>/ func() #有名分组
- include 用来进行路由的分发 url(r'^blog/', include('blog.urls')) - 反向生成URL:#这个不太熟悉
- {%url ""%}
- reverse('a1',args=(1,)) 2. 视图函数:
请求相关:
request:
method #看函数获取数据的方法
GET.get/.getlist 用来获取数据单个数据用get,列表用getlist
POST #同上
COOKIES
#设置是在三次请求中的第二次返回时设置COOKIES
# obj=redirect("/home/")#给浏览器一个cookie在返回时
# # obj.set_cookie("is_login",True,20)#设置一个cookie,它是一个字典类型的
# # obj.set_cookie("username",username)
# return obj
获取COOKIES的值
# is_login=request.COOKIES.get("is_login",None)#判断这个页面是否带着cookie
删除COOKIES
response.delete_cookie("cookie_key",path="/",domain=name)
session
#设置session值
request.session["is_login"]=True#设置session值
request.session["USER"]=username
获取
ret=request.session.get("is_login",None)#获取session里面的键值对
删除session
# del request.session["IS_LOGON"]#这是删除一个键值对
request.session.flush()这是删除整条记录
Django自带的认证系统:
user=auth.authenticate(username=user,password=pwd)#判断是否在数据库内
auth.login(request,user)登陆的语法
User.objects.create_user(username=user,password=pwd)这是创建新用户时的语法
更改密码操作: user request.user获取当前用户的名字
body 所有的数据都在body里
request.FILES 获取上传的文件 响应相关:(三种方法都是字符串)
render
HttpResponse
redirect
3. 模板语言
if for 模板的if和for循环
索引:. 句点符
执行:不加括号自动执行函数 filter和simple_tag 4. ORM操作
创建表:

字段:INT,CHA,FK,M2M # 外键的关系
操作表:(CURD)增删改查
13操作(13中操作)
- 补充:
filter
values
vlaues_list all/values/values_list __ 了不起的下划线 正向和反向 #数据的查询正向与反向 整理:
- 路由对应关系: - 模板继承 - 模板标记标签:for,if, - 返回:
- HttpResponse
- render
- redirect - 启动 - Model类的创建,继承Model - migrate - 模板自定义函数:filter,sample_tag - cookie和Session - 基本配置文件:
- 模板
- 静态文件
- MySQL
和proejct同名的目录的__init__ - Model中自定义方法:__str__ - Model操作:
创建:
create
save
bulk_create
13中操作:
filter(nage='xx")
filter(**{age:18})
values('id')
values(*['id','name'])
values_list
last
first
all
distict
exclude
get
update(age=11)
update(**{age:11})
delete()
- 多对多查询(查询) - URL别名,目的:反向生成URL
/detail/(\d+)/ name = a1 from django.url import reverse url = reverse('a1',args=[6,]) - Django自带auth验证 - 模板 - 分页 - 分组和聚合

Django之知识总结的更多相关文章

  1. django基础知识

    一.django的安装 1. pip3 install django 2. 把安装路径加到环境变量里以便以后启动admin相关命令,在windows系统中---我的电脑---属性----高级系统设置- ...

  2. Django models知识小点

    django 为使用一种新的方式,即关系对象映射(ORM) 一,创建表 1,基本结构 注意: 1,创建标的时候,如果我们不给表加自增列,生成表的时候会默认给我们生成一列为ID的自增列,当然我们也可以自 ...

  3. Django 基础知识

    Django Models django 本身提供了非常强大易使用的ORM组件,并且支持多种数据库,如sqllite,mysql,progressSql,Oracle等,当然最常用的搭配还是mysql ...

  4. Django ORM 知识概要

    相关命令 python3 manage.py makemigrations 根据模型生成相关迁移文件 python3 manage.py migrate 根据迁移文件,将表结构更新到数据库中,并在Dj ...

  5. Django进阶知识

    drf学习之Django进阶点 一.Django migrations原理 1.makemigrattions: 相当于在每个app下的migrations文件夹下生成一个py脚本文件用于创建表或则修 ...

  6. Django准备知识-web应用、http协议、web框架、Django简介

    一.web应用 Web应用程序是一种可以通过web访问的应用程序(web应用本质是基于socket实现的应用程序),程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件 ...

  7. django 基础知识回顾

    内容回顾: 1. ajax参数 url: type: data: 1.value不能是字典 {k1:'v1',k2:[1,2,3,],k3; JSON.string} 2.$('').serilize ...

  8. django基础知识之Response对象

    HttpResponse对象 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调 ...

  9. Django基础知识MTV

    Django简介 Django是使用Python编写的一个开源Web框架.可以用它来快速搭建一个高性能的网站. Django也是一个MVC框架.但是在Django中,控制器接受用户输入的部分由框架自行 ...

随机推荐

  1. 如何在线显示php源代码

    通过php提供的函数highlight_file和highlight_string实现

  2. 微信支付的JAVA SDK存在漏洞,可导致商家服务器被入侵(绕过支付)XML外部实体注入防护

    XML外部实体注入 例: InputStream is = Test01.class.getClassLoader().getResourceAsStream("evil.xml" ...

  3. Linux 安装 JDK

    本篇博客用于记录一下在 Linux 系统下安装 Java 环境. 在大部分的 Linux 系统中都有安装 Open JDK,所以最好是先卸载 Open JDK 后在进行我们的 JDK 安装.Open ...

  4. Linux 源码安装 FFmpeg

    加班次数频繁,已经快一年没有写博了.由于此次在项目中使用到了 FFmpeg 来处理音视频,顾记录下在 Linux 系统中源码安装 FFmpeg 以便不时之需. 1. 安装 yasm yasm 是一个汇 ...

  5. Struts2学习(三)———— 输入校验和拦截器

    一.输入校验 在以前我们写一个登录页面时,并没有限制用户的输入,不管用户输入什么,我们都存入数据库中,很显然这是不行的,我们需要检测用户输入的文本是否合法,是否符合我们需要的文本格式,符合菜放行,而s ...

  6. SpringBoot入门之基于XML的Mybatis

    上一博客介绍了下SpringBoot基于注解引入Mybatis,今天介绍基于XML引入Mybatis.还是在上一篇demo的基础上进行修改. 一.Maven引入 这个与上一篇的一样,需要引入mybat ...

  7. c# 判断是否是手机访问

    public static bool CheckAgent() { bool flag = false; string agent = HttpContext.Current.Request.User ...

  8. Java静态成员与实例成员

    Java静态成员与实例成员 类是一种类型,类中定义的所有成员都归此的对象所有,这些成员成为实例成员:而某些成员想要被所有类的所有对象共享,此时的成员不属于某个对象,而是属于整个类,这些成员成为静态成员 ...

  9. char和string的不同点

    'a'是char, "a"是char string,这两者都是普通的字符和字符串,和C中没什么不同 值得注意的是后者包含两个字符,末尾有一个隐身的'\0' 而:string str ...

  10. html 字符串 生成 pdf 完美解决中文不显示

    //maven <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf< ...