wtf

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默认是自动重启的

​ 重启机制:内有检测机制 实时检测所有文件的变化

​ 有时候会产生 代码还没写完 就自动重启报错的情况 这种情况可以等写完代码手动重启

posted on 2019-11-21 19:59  wtfss  阅读(141)  评论(0)    收藏  举报