django访问页面的整个过程
用户在浏览器输入网址,网址发给服务器,url控制器先来接手,通过url匹配一下交给不同的视图来处理,然后视图去model拿数据,model去数据库拿数据,
model拿完数据,把数据给视图,视图再把数据给模板(模板就是html页面),模板最终返回给浏览器,也就是页面。这就是django完整访问页面的过程。
浏览器发消息称之为请求,服务端回消息称之为响应。
简单的web框架
表示换行
import socket sk=socket.socket() sk.bind(("127.0.0.1",8080))#插上手机卡 #监听 sk.listen()#等待连接 while 1: #获取与客户端的连接 conn, _=sk.accept() #接受客户端发来消息 data=conn.recv(8096) print(data) #给客户端回复消息 conn.send(b'http/1.1 200 OK ') conn.send(b'<h1>hello world</h1>') #关闭 conn.close() sk.close()
http协议简单来说就是收发消息的格式要求 的r是return的意思,回到行首
根据不同的路径返回不同的内容
""" 完善的web服务端示例 根据不同的路径返回不同的内容 """ import socket # 生成socket实例对象 sk = socket.socket() # 绑定IP和端口 sk.bind(("127.0.0.1", 8001)) # 监听 sk.listen() # 写一个死循环,一直等待客户端来连我 while 1: # 获取与客户端的连接 conn, _ = sk.accept() # 接收客户端发来消息 data = conn.recv(8096) # 把收到的数据转成字符串类型 data_str = str(data, encoding="utf-8") # bytes("str", enconding="utf-8") # print(data_str) # 用 去切割上面的字符串 l1 = data_str.split(" ") # print(l1[0]) # 按照空格切割上面的字符串 l2 = l1[0].split() url = l2[1] # 给客户端回复消息 conn.send(b'http/1.1 200 OK content-type:text/html; charset=utf-8 ') # 想让浏览器在页面上显示出来的内容都是响应正文 # 根据不同的url返回不同的内容 if url == "/yimi/": response = b'<h1>hello yimi!</h1>' elif url == "/xiaohei/": response = b'<h1>hello xiaohei!</h1>' else: response = b'<h1>404! not found!</h1>' conn.send(response) # 关闭 conn.close() sk.close()
返回具体的html页面服务端
""" 完善的web服务端示例 函数版根据不同的路径返回不同的内容 进阶函数版 不写if判断了,用url名字去找对应的函数名 返回html页面 """ import socket # 生成socket实例对象 sk = socket.socket() # 绑定IP和端口 sk.bind(("127.0.0.1", 8001)) # 监听 sk.listen() # 定义一个处理/yimi/的函数 def yimi(url): with open("yimi.html", "rb") as f: ret = f.read() return ret # 定义一个处理/xiaohei/的函数 def xiaohei(url): with open("xiaohei.html", "rb") as f: ret = f.read() return ret # 定义一个专门用来处理404的函数 def f404(url): ret = "你访问的这个{} 找不到".format(url) return bytes(ret, encoding="utf-8") url_func = [ ("/yimi/", yimi), ("/xiaohei/", xiaohei), ] # 写一个死循环,一直等待客户端来连我 while 1: # 获取与客户端的连接 conn, _ = sk.accept() # 接收客户端发来消息 data = conn.recv(8096) # 把收到的数据转成字符串类型 data_str = str(data, encoding="utf-8") # bytes("str", enconding="utf-8") # print(data_str) # 用 去切割上面的字符串 l1 = data_str.split(" ") # print(l1[0]) # 按照空格切割上面的字符串 l2 = l1[0].split() url = l2[1] # 给客户端回复消息 conn.send(b'http/1.1 200 OK content-type:text/html; charset=utf-8 ') # 想让浏览器在页面上显示出来的内容都是响应正文 # 根据不同的url返回不同的内容 # 去url_func里面找对应关系 for i in url_func: if i[0] == url: func = i[1] break # 找不到对应关系就默认执行f404函数 else: func = f404 # 拿到函数的执行结果 response = func(url) # 将函数返回的结果发送给浏览器 conn.send(response) # 关闭连接 conn.close()
静态网页与动态网站的区别
静态网站:数据不变
动态网站:数据会变化
返回动态的html 页面
qt是什么?
qt可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。
一.web应用程序是什么
web应用程序是一种可以通过web访问的应用程序,用户只需要浏览器即可不需要其他软件。
web应用程序的优点:
web应用程序的缺点:
所有django入口文件都是manage.py开始的
settings配置相关的
urls路径和函数对应关系的文件
pycharm创建django项目
file--------->new project----------->django 路径E:python10day60mysite
不要用new environment using 用existing interpreter
选这个三角下拉框中 电脑上的python.exe解释器
然后open in new window 在新的窗口打开不要用当前窗口
所有管理django项目的文件称之为manage.py
相关代码
url文件下的相关代码
from django.conf.urls import url from django.contrib import admin from django.shortcuts import HttpResponse def yimi(request): #request参数保存了所有用户和相关浏览器的数据 with open("./templates/yiming.html",'r',encoding='utf-8') as f: data=f.read() return HttpResponse(data) def xiaohei(request): #request 参数保存了所有用户浏览器请求相关数据 return HttpResponse('hello xiaohei!haha 小黑你真黑啊') #保存了路径和函数的对应关系 urlpatterns = [ url(r'^yimi/', yimi), url(r'^xiaohei/', xiaohei), ]
3. 新建Django项目
命令行创建:
django-admin startproject mysite
pycharm创建:
1. File --> New project --> 左侧选Django --> 右侧填项目路径,并且勾选python.exe app里面可以填写app01
4. 设置Django项目:
1. settings.py
1. 配置HTML文件存放的位置
2. 配置静态文件存放的位置
第七个视频14分36秒会详细讲解site的关系
配置 html文件存放的位置
配置静态文件存放的位置
今日相关知识点
get相当于获取一个网页
post相当于给服务端提交数据