1. 课程介绍 - 数据类型 - 函数 - 面向对象三大特性:继承,封装,多态 - socket:本质传输字节;所有网络通信都基于socket - 数据库设计:单表、FK、M2M (自己作业:自己领域设计表,相亲网站) - 会用:html/css/js/bootstrap2. 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验证 - 模板 - 分页 - 分组和聚合
时间: 2024-10-30 00:19:13