1.web应用程序:
基于B/S架构,S端由server和application两大部分组成。
2.HTTP协议复习:
超文本传输协议,用于从服务器传输超文本到本地浏览器的传送协议,基于TCP/IP通信协议来传递数据。
四大特性:
- 基于请求响应
- 基于TCP/IP之上的作用于应用层的协议
- 无状态(服务端无法保存用户的状态,可以用cookies,session,token解决)
- 无连接(请求来一次响应一次,之后立马断开连接,两者之间不再有任何关系了,可以用websocket长连接解决)
3.请求格式
- 请求首行(标识HTTP协议版本,当前请求方式),例如:
b'GET / HTTP/1.1\r\n
- 请求头(一大堆k,v键值对),例如:
Host: 127.0.0.1:8080\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36\r\n
....
- 请求体(携带一些敏感信息,比如密码,身份证号...)
4.响应状态码
用一些简单的数字来表示一些复杂的状态或者提示信息
1xx:服务端已经成功接收到了你的数据正在处理,你可以继续提交额外的数据。
2xx:服务端成功响应 你想要的数据(请求成功200)
3xx:重定向(当你在访问一个需要登录之后才能访问的页面,窗口会自动调整到登录页面(301,302)
4xx:请求错误(请求资源不存在404,请求不合法不符合内部规定,权限不够403)
5xx:服务器内部错误(500)
5.web框架的由来:
重复开发复杂且重复的server毫无意义,有一个wsgiref模块帮我们写好了server功能,即make_sever。我们只写app功能即可。
from wsgiref.simple_server import make_server
基于第三方模块:
views.py 里面放函数,叫视图函数
urls.py 里面放路由(后缀)与视图函数的对应关系
templates 里面放的全是html文件
6.动静态网页
静态网页:数据是写死的 哪怕改变了也是人为修改的
动态网页:数据是实时获取的(后端代码动态获取 当前时间 ;数据是从数据库查询出来的)
7.jinja2模板语法:
-
专门用来处理后端数据与html页面的交互
-
让你能够在html页面上,用后端Python语法来操作后端传递过来的数据
-
模板的渲染:将后端传递给html文件的数据 在后端处理好,生成一个完整的html文件的过程,跟前端无关
<p>{{ userDic }}</p>
<p>{{ userDic.username }}</p>
<p>{{ userDic['age'] }}</p>
<p>{{ userDic.get('hobby') }}</p>
<p>{{ userDic.get('hobby').0 }}</p>
<p>{{ userDic.get('hobby').1 }}</p>
<p>{{ userDic.get('hobby').2 }}</p>
{% for user_dic in user_list %}
<tr>
<td>{{ user_dic.id }}</td>
<td>{{ user_dic.username }}</td>
<td>{{ user_dic.password }}</td>
</tr>
{% endfor %}
8.Python三大主流web框架
- django 大而全 自带的组件和功能非常非常多
缺点:写小项目的时候 可能比较笨重(大材小用)
-
flask 小而精 短小精悍 自带的组件和功能特别特别少
基本全依赖第三方组件,如果将flask所有第三方模块加起来 能 够直接盖过Django
缺点:受限于第三方模块
-
tornado 异步非阻塞 这个框架速度非常快,甚至可以开发游戏服务器
a:socket部分
b:路由匹配
c:模板语法
django: a用wsgiref(django默认的),b,c自己写
flask:a用werkzeug,b自己写,c用jinja2
Tornado:a,b,c都自己写
9.django框架介绍
-
注意事项:
- 计算机名称不能有中文;
- Python解释器不要使用3.7版本 推荐使用3.4~3.6
- 一个pycharm窗口 只能跑一个项目
-
django版本问题:以1.11.11为主(1.11.9~1.11.13)
-
如何检验django是否安装成功:
命令行敲 django-admin
-
命令行创建项目
-
创建django项目:django-admin startproject 项目名(例如mysite)
-
启动django项目
- 切换到项目目录文件夹下
- Python3 manage.py runserver
- Python3 manage.py runserver 127.0.0.1:8080
-
创建应用(django支持多app开发):
Python3 manage.py startapp app01
-
注意:不会自动帮你创建templates文件夹;配置文件中不会自动帮你书写template文件路径
-
-
app的概念:
-
django是一个以开发app为主要功能的web框架
-
app就是application应用的意思
-
一个空的django本身没有任何作用 仅仅是为app提供前期的环境配置
-
你可以根据功能的不同,开发多个app
-
一个app对应一个具体的功能模块
注意:创建好的app需要在django配置文件中注册方可生效
-
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 'app01' # 简便写法
'app01.apps.App01Config' # 最完整的写法
]
-
pycharm创建项目
-
创建应用的时候 可以使用简便方法
Tool>>> run manage.py task
-
一定要确保同一个端口 同一个时间只能启动一个django项目
-
配置文件中针对templates 文件夹的路径如果是空的需要手动配置
'DIRS': [os.path.join(BASE_DIR, 'templates')] -
-
django文件功能
-
django项目名
-
项目同名的文件夹
settings.py 给用户可以配置的配置文件
urls.py 路由与视图函数对应关系
manage.py django的入口文件
-
应用名文件夹
migrations文件夹 所有数据库相关的操作记录
admin.py django admin 后台管理
apps.py 注册app使用
models.py 放所有数据库相关的模型类
tests.py 测试类
views.py 处理业务逻辑的视图函数
-
-
-
django小白必会三板斧
HttpResponse 返回字符串
render 返回给html页面传值
def login(request):
user_dic = {'username':'jason','password':'123'}
return render(request,'login.html',{'xxx':user_dic})
redirect 重定向
1.直接写你本网站的路径后缀
2.也可以写全路径
def home(request):
# return redirect('/login') # 重定向
return redirect('https://www.baidu.com') # 重定向
注意:django默认是自动重启的
重启机制:内有检测机制 实时检测所有文件的变化
有时候会产生 代码还没写完 就自动重启报错的情况 这种情况可以等写完代码手动重启
浙公网安备 33010602011771号