django初识

web应用的本质

web的本质:请求,处理,响应

socket网络编程

​ 架构:C/S架构

​ TCP/UDP协议

​ 传输层

web应用

​ 架构:B/S架构

​ 协议:http协议

​ 应用层

字符串转字节:bytes('aaaa',encoding='utf8')

字节转字符串:str(res,encoding='utf8')

web框架本质

对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端

import socket


def handle_request(client):
    data = client.recv(1024)
    client.send(bytes("HTTP/1.1 200 OK\r\n\r\n", encoding='utf-8'))
    client.send(bytes('aaa',encoding='utf8'))


def main():
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock.bind(('127.0.0.1',8000))
    sock.listen(5)

    while True:
        conn,add = sock.accept()
        handle_request(conn)
        conn.close()


if __name__ == '__main__':
    main()

HTTP协议

请求

由三部分组成:请求行,请求头,请求体

​ 请求头后面会有一个换行,然后是请求体

请求行

​ 请求方法,页面地址,协议版本

GET/BOOK/JAVA.HTML HTTP/1.1

请求头

​ 由key/value 组成,告诉服务端需要的资源类型。

Accept:用于告诉服务器,客户机支持的数据类型  (例如:Accept:text/html,image/*)

Accept-Charset:用于告诉服务器,客户机采用的编码格式

Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式

Accept-Language:客户机语言环境

Host:客户机通过这个服务器,想访问的主机名

If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间

Referer:客户机通过这个头告诉服务器,它(客户端)是从哪个资源来访问服务器的(防盗链)

User-Agent:客户机通过这个头告诉服务器,客户机的软件环境(操作系统,浏览器版本等)

Cookie:客户机通过这个头,将Coockie信息带给服务器

Connection:告诉服务器,请求完成后,是否保持连接

Date:告诉服务器,当前请求的时间

请求体

​ 包括请求的一些数据

​ get请求通过url给服务器传值,post请求通过表单给服务器传值

name=dylan&id=110

响应

由三部分组成:响应行,响应头,响应体

响应行

​ 协议版本,响应状态,响应结果

HTTP/1.1  200 OK

响应头

Location:这个头配合302状态吗,用于告诉客户端找谁

Server:服务器通过这个头,告诉浏览器服务器的类型

Content-Encoding:告诉浏览器,服务器的数据压缩格式

Content-Length:告诉浏览器,回送数据的长度

Content-Type:告诉浏览器,回送数据的类型

Last-Modified:告诉浏览器当前资源缓存时间

Refresh:告诉浏览器,隔多长时间刷新

Content-Disposition:告诉浏览器以下载的方式打开数据。例如: context.Response.AddHeader("Content-Disposition","attachment:filename=aa.jpg");                                        context.Response.WriteFile("aa.jpg");

Transfer-Encoding:告诉浏览器,传送数据的编码格式

ETag:缓存相关的头(可以做到实时更新)

Expries:告诉浏览器回送的资源缓存多长时间。如果是-1或者0,表示不缓存

Cache-Control:控制浏览器不要缓存数据   no-cache

Pragma:控制浏览器不要缓存数据          no-cache

Connection:响应完成后,是否断开连接。  close/Keep-Alive

Date:告诉浏览器,服务器响应时间

响应体

​ 包含浏览器能够解析的静态内容,例如:html,纯文本,图片等等信息

"hello world"

django的安装和启动

安装方法

​ pip install django1.11.22(前后不要有空格)

​ pycharm安装

django的创建

​ django-admin startproject 项目名

​ ps:项目名不要有括号和特殊字符

​ pycharm创建

需要的操作

到settings.py中, 配置:
1.  STATIC_URL = '/static/'
	STATICFILES_DIRS = (
		os.path.join(BASE_DIR, 'static'),
	)
逗号不能少
static目录需要创建


2.  MIDDLEWARE = [
	'django.middleware.security.SecurityMiddleware',
	'django.contrib.sessions.middleware.SessionMiddleware',
	'django.middleware.common.CommonMiddleware',
	#'django.middleware.csrf.CsrfViewMiddleware',
	'django.contrib.auth.middleware.AuthenticationMiddleware',
	'django.contrib.messages.middleware.MessageMiddleware',
	'django.middleware.clickjacking.XFrameOptionsMiddleware',
	]

3. 'DIRS': [os.path.join(BASE_DIR, 'templates')]

django目录结构

s9day54:
	s9day54:
		settings.py: 配置文件
		urls.py: 路由映射关系
		wsgi.py : socket服务端文件
	static:(自创)
		css
		js
		img
	templates:
    	html模版
	manage.py: 管理文件

django服务

​ pycharm启动

django的路由介绍

添加路由和函数的对应关系:

在urls.py文件中操作

return HttpResponse:它是作用是内部传入一个字符串参数,然后发给浏览器

from django.shortcuts import HttpResponse


	urlpatterns = [      
		# url(r'^admin/', admin.site.urls),      
   		url(r'^index/', index),   
   		]
   			
def index(request):      
	return HttpResponse('index')

django连接数据库操作

​ pymsql连接

​ 连接数据库的函数写在urls.py文件中

from django.shortcuts import HttpResponse,render

def index(request):
    return HttpResponse('index')

def h1(request):
    import pymysql
    conn = pymysql.connect(
        host = '127.0.0.1',
        port = 3306,
        user = 'root',
        password = 'admin123',
        database = 'django0807'
    )
    course = conn.cursor(pymysql.cursors.DictCursor)
    sql = 'select  * from student'
    course.execute(sql)
    data = course.fetchall()

    return render(request,'h1.html',{"data":data})

​ 从数据库中获取的数据是以字典形式传到html页面中,在html页面中遍历字典,最后显示在页面

 {% for i in data %}
    <tr>
        <td>{{ i.id }}</td>
        <td>{{ i.name }}</td>
        <td>{{ i.age }}</td>
        <td>{{ i.class_id }}</td>
    {% endfor %}
posted @ 2019-08-23 15:01  X_solitude  阅读(139)  评论(0编辑  收藏  举报