Django

什么是web应用?

软件开发架构:

  c/s架构

    客户端

    服务端

  b/s架构

    浏览器

    服务器

HTTP协议:

超文本传输协议,规定了客户端与服务端之间传输数据的格式

HTTP四大特性:

1.它是基于tcp/ip协议应用在应用层的协议

2.基于请求响应

3.无状态

4.无连接

为什么说其无状态无连接:因为http请求建立起连接后会立马断开并重新建立连接,所以说这样是没有状态的,另外,服务端只能等待客户端连接,不会主动发送数据给客户端

数据格式之请求:

1.请求首行

2.请求头(一堆k与v的键对值)

  

GET / HTTP/1.1
Host: 127.0.0.1:8080 (主机名)
Connection: keep-alive (保持链接)
Cache-Control: max-age=0 (缓存不失效)
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Token: bdsjalbdjsalbdjsa

注意这里是空格!!!

4.请求体(post请求携带的数据)

数据格式之响应:

1.响应首行

2.响应头(k与v的键对值)

空格!!!

4.响应体(post请求携带的数据)

http的默认端口是80,https是443

响应状态码:

1xx :表示服务器已经成功接收到了数据正在处理,可以继续发送数据给服务端

2xx:200 表示请求已经成功,并且已经将数据放回给客户端

3xx:302 表示永久重定向 303表示暂时重定向

4xx:404 表示请求失败,403表示禁止访问,权限不够

5xx:500 表示服务端代码错误   502表示网关错误

DNS(域名解析服务器,记录者域名与IP的对应关系)工作流程:

pc端会将域名发送给本地DNs服务器,如果本地DNS没有会去找根DNS服务器,根DNS会将域名所在顶级服务器返回,并重新找顶级DNS服务器,一环一环下来,直到找到并返回数据,然后本地DNS服务器会将数据存在缓存并返回数据给客户端。

DNS分级:

13台根域名服务器(10台在美国,2台欧洲(1台英国,一台瑞典),一台日本)

13台顶级DNS服务器(.com,.net,.org,.cn,.edu)

权威域名服务器(baidu.com)

二级域名服务器(www.baidu.com)

动静态网页:

  静态网页:页面上的数据都是写死的,万年不变

  动态网页:页面上的数据是从后端动态获取的

  比如后端获取当前数据库数据然后传递给前端页面

模板渲染:

  后端生成的数据直接传递给前端页面使用(并且前端页面可以灵活的操作改数据)===模板语法。

  模板渲染 模板语法需要依赖于第三方模块

  pip install jinja2

  模板语法 jinjia2支持前端直接使用类似于python的语法操作数据

  

<p>{{ user_dic }}</p>
    <p>{{ user_dic.name }}</p>
    <p>{{ user_dic['password'] }}</p>
    <p>{{ user_dic.get('name') }}</p>
    
    {% for user in user_dict %}  <!--[{},{},{},{}]-->
        <tr>
            <td>{{ user.id }}</td>
            <td>{{ user.name }}</td>
            <td>{{ user.password }}</td>
        </tr>
    {% endfor %}

什么是web框架?

python主流的三大web框架:

  Django:大而全,里面有很多自带的模块(缺点:有点笨重)

  Flask:短小精悍,自带的模块非常少,主要依赖于第三方模块(小而轻)

  Tornado:异步非阻塞,主要用于处理高IO,多路复用的情况,可以写游戏后端

自定义的web框架:

a.socket服务端

b.路由与视图函数

c.将html代码和mysql的数据进行融合(自己定制规则,使用第三方工具)模板渲染

按照上面的abc三大主流web框架的特点 是

Django:

  a用的别人的 模块wsgiref

  b自己写的

  c自己写的

Flask:

  a用别人的  werkzeug

  b自己写的

  c用的别人 的 jinjia2

Tornado:

  abc都是自己写的

注意事项:

  1.计算机的名称不能有中文

  2.一个parcharm窗口就是一个项目,不要多个项目放在一个窗口里面

  3.项目名不能起中文

创建django:

方式一(命令行创建):

  创建django项目

    django-admin startproject 项目名

  创建app应用

    python3 mange.py startapp app01

  启动django项目

    python3 mange.py runserver

  ps:用命令行创建django默认不会自动创建templates文件夹

  需要你手动自己创建(注意改文件夹路径是否被添加配置文件中

方式2:(pycharm创建)

  FILE >>> new project 选择第二个django

  需要注意名字不能有中文,选择本地的解释器,勾选后台管理

  创建app

    pycharm命令行创建

      python3 mange.py startapp app01

    Tools 下面run mange task 功能栏

   启动点小绿色箭头

强调:

1.用django一定要保证只有一个在运行状态!!!!!

2.一定记得清浏览器的缓存

django创建完成后

  1.配置末班文件路径:'DIRS': [os.path.join(BASE_DIR, 'templates')]

  2.配置静态资源的文件路径:

               STATIC_URL = '/static/'
               STATICFILES_DIRS = (
               os.path.join(BASE_DIR, 'static'), (逗号不能少)
                                  )

注释中间件: 

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',
]

django小白必会三板斧
from django.shortcuts import render,HttpResponse,redirect

HttpResponse 返回字符串
render 返回一个html页面
两种给前端页面传值的方式
def reg(request):
user_dict = {'name':'jason','password':'123'}
return render(request,'reg.html',{'user_dict':user_dict})

def reg(request):
user_dict = {'name':'jason','password':'123'}
return render(request,'reg.html',locals())

redirect 重定向

django识别到你的代码变化之后会自动,但是有时候反应速度比较慢
你可以手动重启,你也可以多刷新几次浏览器

    

 

  

路由系统:

[ ('/xxx',f1),('/bbb',f2),('/ggg',f3) ]

里面的f1,f2,f3对应就是外面定义的函数

原文地址:https://www.cnblogs.com/xinfan1/p/11159735.html