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. vue router history模式开发ngnix配置

    一.前沿 现在很多用vue-router开发页面的时候,都习惯使用hash路由莫模式,如:https://xxxx/#/index/share?code=dsfsd.这种模式在做pc端开发时候挺好用的 ...

  2. Struts2学习(一)————Struts2入门

    首先推荐一本书,虽然我还没看过,但是我以后肯定会看的,<Struts+技术内幕>提取密码:kg6w .现在只是停留在会使用struts2的层次,自己也想继续深入研究,但是感觉自己的知识面还 ...

  3. Jmeter接口测试——跨线程组调用参数(token为例)

    昨天学会了动态获取token,今天测试接口时希望能够实现跨线程调用token值. 实现原理: jmeter本身的“__setProperty”函数可以把某参数的值设置成jmeter本身的内置属性,而j ...

  4. Python 3 进阶 —— print 打印和输出

    在 Python 中,print 可以打印所有变量数据,包括自定义类型. 在 2.x 版本中,print 是个语句,但在 3.x 中却是个内置函数,并且拥有更丰富的功能. 参数选项 可以用 help( ...

  5. .6-浅析webpack源码之validateSchema模块

    validateSchema模块 首先来看错误检测: const webpackOptionsValidationErrors = validateSchema(webpackOptionsSchem ...

  6. 【转载】To the Virgins, to Make Much of Time

    Gather ye rosebuds while ye may Old Time is still a-flying And this same flower that smiles today To ...

  7. 修改mysql忽略大小写

    mysql -p --1.登录mysql show variables like "%case%";+------------------------+-------+| Vari ...

  8. oracle sql优化的几种方法

    1.最基本最简单的方式是减少访问数据库的次数.oracle在内部执行了许多工作,比如解析SQL语句, 估算索引的利用率,  读数据块等等,都将大量耗费oracle数据库的运行 2.选择最有效率的表名顺 ...

  9. 【Java】用注解实现分发器

    在C/S中,客户端会向服务器发出各种请求,而服务器就要根据请求做出对应的响应.实际上就是客户机上执行某一个方法,将方法返回值,通过字节流的方式传输给服务器,服务器找到该请求对应的响应方法,并执行,将结 ...

  10. 微信跳一跳Python辅助无需配置一键操作

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8350329.html 邮箱:moyi@moyib ...