Django 入门

web程序的执行流程

web程序是基于B/S架构的软件
软件的架构: C/S 和 B/S
Client客户端/Server服务端: 客户需要在自己的电脑/手机[设备终端]下载客户端, 启动了客户端以后就自动和服务端进行了通信, 通信以后,那么可以享受到 服务端提供的资源/数据或者服务.
      酷狗,大型网络游戏.

Browser浏览器/Server服务端, 是一种特殊的C/S.
      客户端只需要下载安装一个浏览器,不再需要针对不同的服务端去下载对应的客户端.
      所有的客户端都直接运行在浏览器里面作为网页展示出来.

      服务端直接与浏览器进行通信, 用户通过网页调用浏览器的资源发起http/webSocket请求服务端的数据/资源或者服务.

http协议

HyperText Transfer Protocol

超文本传输协议, 实现了客户端和浏览器的一种简单的请求-响应模式的通信.http协议是构建于tcp协议之上.

早期发布比较成熟的是http1.0版本,目前最新是2.0版本.

http的特点

  1. 基于请求和响应模式,

    服务端是不能够主动链接客户端,推送信息的.

    必须只能由客户端发起请求,服务端才能响应客户端的.

    客户端但凡有所请求,服务器必有所回应.

     

  2. 一种无状态的协议

  3. 短连接,1.1版本以后可以通过配置修改成为长链接.

 

 

http的组成

http协议有请求和响应格式:

请求[request]

请求有三部分组成: 请求行,请求头和请求体,请求头和请求体之间必须有一个空行!!!请求体比不是必须的.

请求行 request-line     method     path    version
请求头 request-header   Host: 域名
                      Content-Type: 值

请求体 request-body     username=xiaoming&password=123456

method : 请求方法/请求类型

get      获取数据
post     添加数据/上传数据
put     修改数据[修改全部数据]
patch   修改数据[修改部分数据]
delete   删除数据

get和delete是没有请求体的!!!

path: 请求的资源所在的路径地址

例如:   /index.html

一个基于http的完整url地址:
  协议://域名(IP):端口/路径?查询字符串#锚点
  Protocol://domain:port/path?query_params#hash
 
  http://www.luffycitiy.com/course/1.html?cid=1&page=2#question
  https://www.luffycitiy.com/course/1?cid=1&page=2#question

version: 本次请求中使用的http协议版本

格式:
GET /index.html HTTP/1.1

Host和Content-Type: http请求中的请求头信息

GET /index.html HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

 

响应[response]

格式:

响应行    version  status   message
响应头   Location: 域名
        Content-Type: 值
        Content-Length: 值

响应体   一般是html文本或者json数据

status: http响应状态码

状态码一般由三个数字构成,表示整个http请求和响应过程中的处理结果.

常见的状态码

1xx 表示本次请求还在继续当中.链接没有被中断
  101 链接持续中
2xx 表示本次请求和响应已经成功结束
  200 ok,双方合作愉快
  201 created,服务端创建数据或者文件成功了
  204 no content, 服务端成功删除了数据或者文件
3xx 重定向
  301   永久重定向
  302   临时重定向
  304   命中缓存
   
4xx 客户端请求发生错误了
  400   bad request 请求参数有误
  401   forbidden   客户端没有得到访问页面的授权[没有授权,未登录]
  403   forbidden   客户端无法访问页面[没有权限]
  404   not found   找不到页面

5xx 服务端响应发生错误了
  500   服务器内部错误
  502   网关故障
  507   服务端调用第三方存储的时候出错了.
   

message: http响应信息,上面举例中的 ok , not content.

 

域名[Domain]

IP协议: xxx.xxx.xxx.xxx 每个数值的取值范围: 0-255

每个人的电脑都会有一个到多个域名:

lo网卡: 回环网卡, IP地址: 127.0.0.1

network: 192.168.0.2

 

IP太难记了,所以就有了域名.

域名需要和IP进行一对一的绑定.所以一般我们访问一个域名的时候,程序都会对域名进行解析成IP地址.程序本身是不具备把域名转换成IP的能力的.具备域名解析成IP能力的程序是DNS服务器.

DNS服务器,专门记录了域名和IP地址的映射关系.

DNS解析可以在用户电脑本身进行解析,也可以由路由进行解析,还可以通过专门专业的DNS服务器进行解析.

DNS服务器一般有顶级的,二级的,三级...

其中顶级DNS在全球范围有11台.

 

jd.com # 顶级域名, 正常情况下购买的域名 域名.域名商

www.jd.com # 二级域名

image.bold.baidu.com # 三级域名

 

web程序的组合

django框架

工作中一般开发web项目,往往有实力的公司,自己从0开发一个web 程序.但是如果公司要追求开发效率和开发时间,这时候,就会考虑使用已经开源的成熟的web框架.

web框架: 一个半成品网站项目,这项目,我们如果下载安装,则项目的目录结构已经固定的,里面默认提供大量给我们开发者开发项目用的类库或者功能.

python中常用的web框架: django, flask 和 ternado

轻量级的框架: flask, ternado

重量级的框架: django

 

django目前最新是3.x版本, 目前比较流行的2.1, 同时并存的版本2.0,2.2和1.10

django2.2

django学习工具

1. 官网: http://www.djangoproject.com
   官方文档[中文]: https://docs.djangoproject.com/zh-hans/2.0/
   离线手册: https://media.djangoproject.com/docs/django-docs-2.0-zh-hans.zip

2. django社区
   http://www.python88.com/

3. pycharm 内容提示, 常用的查看代码的方式[类结构图, 单点调试]

 

django的快速入门

django是一个开源的重量级web框架.基于MVT设计模式开发的.

注意: django2.0以后的版本不支持python2.7以下版本.

 

快速安装使用

pip3 install django==2.2 -i https://pypi.douban.com/simple



基于django搭建一个web应用.

在本地安装完成django框架以后,系统环境中就会内置一个django-admin命令,开发者可以借助这个命令快速生成django项目.

django-admin startproject 项目目录名 -p python3
django-admin startproject 项目目录名

例如:我们在当前桌面下创建一个名为demo的项目

cd ~/Desktop
django-admin startproject demo -p python3

终端输入命令:

效果:

有了项目了以后,我们可以通过django的manage.py文件调用在django内部的测试服务器来运行django项目.

cd demo
python3 manage.py runserver # 注意,我们当前电脑中安装的python3所以使用python3
# 默认情况下,python在启动测试服务器,绑定域名是127.0.0.1,端口是8000
# 如果要改成别的端口或者修改成绑定别的域名,则需要在runserver 域名:端口
# python3 manage.py runserve 127.0.0.1:5555

访问效果:

上面的界面表示我们已经成功安装了django并且启动了项目项目.

 

一般项目开发我们都会使用虚拟环境来运行项目.

所以虚拟环境,就是为了保证项目能够在同一个电脑,和不同项目的第三方模块进行隔离使用的技术.

 

虚拟环境

我们需要使用虚拟环境,我们必须先安装虚拟环境到本地系统中才能够使用到.

# 安装虚拟环境的核心模块
pip3 install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple

# virtualenv提供的方便开发者操作虚拟环境的命令集合
pip3 install virtualenvwrapper  -i https://pypi.tuna.tsinghua.edu.cn/simple 

pip3 install virtualenvwrapper-win  # window兼容

虚拟环境的操作命令

workon Enter键             列出当前系统中所有已经创建虚拟环境
workon 虚拟环境名称         使用/进入指定名称的虚拟环境中
                          # 例如: 我们已经有了一个demo虚拟环境,则使用demo环境中的模块则可以
                          # workon demo
                          
mkvirtualenv 虚拟环境名称   创建一个指定名称的虚拟环境
                          # 1. 创建一个目录在 用户家目录/.virtualenvs/
                          # 2. 根据我们命令中的要求,复制一份python解析到虚拟环境目录中
                          # 3. 我们可以通过终端左边的小括号来识别当前我们是否使用了虚拟环境.
                          #    例如: 
                          #        (demo) moluo@ubuntu:~/.virtualenvs/demo/bin$ 

mkvirtualenv 虚拟环境名称 -p python3  指定使用python3的解析器来创建虚拟环境

deactivate                退出当前虚拟环境
                          # 例如:
                          # (demo) moluo@ubuntu:~/.virtualenvs/demo/bin$ deactivate 
                          # moluo@ubuntu:~/.virtualenvs/demo/bin$
rmvirtualenv 虚拟环境名称   删除一个指定名称的虚拟环境

pip list                  # 列出当前python解析器中安装了的模块包列表
pip freeze                # 列出当前python解析器中锁定/冻结的模块包列表
pip freeze > requirements.txt # 把当前环境中安装所有模块版本冻结并记录到requirements.txt文件中

pip install -r requirements.txt  # 使用递归来执行安装requirements.txt冻结的模块对应的版本.

理论上,我们会为每一个项目都会单独搭建一个虚拟环境.方便我们将来区分每一个项目所以来的模块包和对应的版本.

 

原文地址:https://www.cnblogs.com/oneone123/p/12043976.html