简单Django框架推导及Django安装介绍

小结

软件开发架构
c/s 架构 客户端 服务端
b/s 架构 浏览器 服务端

HTTP协议:超文本传输协议

  1. 四大特性

    1. 基于TCP/IP之上作用于应用层
    2. 基于请求响应
    3. 无状态(不保存状态,每次请求都认为是陌生的请求)
    4. 无连接 (一旦数据交互完成就断开连接) 对比:长连接(websocket(HTTP协议大补丁)
  2. 数据格式
    1. 请求格式:

      ? 请求首行(请求方式,协议版本......)
      ? 请求头(一大堆k:v键值对)
      ? \r\n
      ? 请求体(真正的数据 ,发post请求的时候才有,如果是get请求不会有)

    2. 响应格式
      1. 响应首行
      2. 响应头
      3. \r\n
      4. 响应体
    3. 响应状态码

      用特定的数字表示一些意思

      1XX:服务端已经成功接收到了你的数据,正在处理,你可以继续提交其它数据
      2XX:服务端成功响应(200 OK,请求成功)

      3XX:重定向(请求当前页面功能时,服务端跳转到另一页面某功能)

      4XX:请求错误(404,请求资源不存在, 还有403 拒绝访问)
      5XX:服务器内部错误(500...)

请求方式
get请求:朝别人要数据

? post请求:向别人提交数据(eg:用户登录)

? url(统一资源定位符)

  1. 纯手撸web框架
import socket

server = socket.socket()
server.bind(('127.0.0.1', 8080))
server.listen(5)

while True:
    conn, addr = server.accept()
    data = conn.recv(1024)
    #print(data) # 接收到的是一堆二进制
    conn.send(b'HTTP/1.1 200 OK \r\n\r\n')
    data = data.decode('utf-8')
    current_path = data.split('\r\n')[0].split(' ')[1]
    print(current_path)  #/login
    if current_path == '/index':
        with open(r'index.html', 'rb')as f:
            conn.send(f.read())
    elif current_path == '/login':
        conn.send(b'login')
    else:
        conn.send(b'404 error')
    conn.close()
  1. 基于wsgiref模块
    该模块实现了上面两个手动的过程

    ? 根据功能不同拆分成了不同的py文件

    ? urls.py 只放路由与视图函数对应关系 (路由就是输入的后缀,如/index)

    ? views.py 放视图函数(函数或类)

    ? 拆分完成后, 如果想要添加功能,只需要在上面两个地方动手脚就好了

? 3.动静态网页

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

? 动态网页:数据是实时获取的

? eg: 1.后端获取的当前时间展示到前端

? 2.后端获取数据库中的数据展示到前端

疑问:如何将后端获取的数据,传递给html页面

? 后端获取的数据,传递给html页面,通过:模板渲染
? jinja2
? pip3 install jinja2
? 模板语法(极其贴近python后端语法)

<p>
   {{user}}
</p>
<p>
    {{user.name}}
</p>
<p>
    {{user['pwd']}}
</p>
<p>
    {{user.get('hobby')}}
</p>

{% for user_dic in user_list %}
    <tr>
        <td>
            {{user_dic.id}}
        </td>
        <td>
            {{user_dic.name}}
        </td>
        <td>{{user_dic.pwd}}</td>
    </tr>
{% endfor %}

python三大主流web框架
Django:
大而全 自带的功能特别特别多 类似于航空母舰
有时候过于笨重

Flask
    小而精 自带的功能特别特别少 类似于游骑兵
    第三方的模块特别特别多,如果将flask第三方模块全部加起来 完全可以超过django

    比较依赖于第三方模块

Tornado
    异步非阻塞
    牛逼到可以开发游戏服务器

?
? A:socket部分
? B:路由与视图函数对应关系
? C:模板语法
?

Django:
    A用的别人的  wsgiref
    B自己写的
    C自己写的
Flask
    A用的别人的  werkzeug(基于wsgiref)
    B自己写的
    C用的别人的  jinja2
Tornado
    三者全是自己写的

注意事项
1.计算机的名称不能有中文
2.一个pycharm窗口就是一个项目
3.项目名里面尽量不要用中文

django版本问题
1.X 2.X 现在市面上用的比较多的还是1.X
推荐你使用1.11.9~1.11.13

django安装
pip3 install django==1.11.11

如何验证django是否安装成功
命令行直接敲django-admin

一个django项目就类似于是一所大学,而app就类似于大学里面的学院
django其实就是用来一个个应用的
一个app就相当于一块独立的功能
用户功能
管理功能
django支持任意多个app

?

如何使用
命令行使用
创建django项目
django-admin startproject mysite
启动django项目
python manage.py runserver
创建应用app
python manage.py startapp app01

        注意:
            1.新创建的app需要你去settings配置文件中注册
            pycharm只会帮你注册第一个你在创建项目的时候写的应用

?
?
?
?
?
? 注意:
? 1.使用命令行创建django项目 不会自动帮你创建templates文件夹
? 只能自己创建
? 2
? os.path.join(BASE_DIR, ‘templates‘)

?
? pycharm使用

在启动django项目的时候 你一定要确保一个端口只有一个django项目

项目名
跟项目名同名的文件夹
settings.py 暴露给用户的配置文件
urls.py 路由与视图函数对应关系
应用名
migrations文件夹 存放数据库迁移记录的
admin.py django后台管理
apps.py 注册相关
models.py 模型类
tests.py 测试文件
views.py 存放视图函数
templates文件夹 存放html文件
manage.py django入口文件

原文地址:https://www.cnblogs.com/chmily/p/11718081.html

时间: 2024-10-10 06:07:20

简单Django框架推导及Django安装介绍的相关文章

Django 框架篇(九): Django中的Form 组件

Django中的Form组件,帮我们处理了 form表单中的校验, 和错误提示的处理: 主要功能: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 使用form组件实现注册功能 1.  定义一个类, 继承django中的 forms.Form 代码实例: from django import forms # 按照Django form组件的要求自己写一个类 class RegForm(forms.Form): name = forms.CharField(label="用

Django框架进阶7 django请求生命周期流程图, django中间件, csrf跨站请求伪造, auth认证模块

django请求生命周期流程图 djang中间件 它是django的门户 只要是全局相关的功能你都应该考虑使用django中间件来帮你完成 全局用户身份校验 全局用户访问频率校验 用户访问黑名单 用户访问白名单 # 只要以后用django开发业务 设计到全局相关的功能 你就考虑用中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.Sessio

Django 框架篇: 一. Django介绍; 二. 安装; 三. 创建项目;

一. web框架:   框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\

Django框架(一)—— 安装使用Django

Django入门 一.web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件 二.C/S 和B/S 架构 客户端/服务端架构即(Client/Server,简称C/S) 浏览器/服务器架构(Browser/Server,简称B/S)能够很好地应用在广域网上,成为越来越多的企业的选择 总结一下,本质上:浏览器是一个 socket客户端,服务器是一个 socket服务端 三.python中的web框架 目前的

Django框架下载与Django框架初识

Django下载安装 #下载 pip3 install django==1.11.9 pip3 install django==1.11.9 -i http://xxxxxx 指定源 #创建项目 django-admin startproject mysite 创建了一个名为"mysite"的Django 项目 #启动项目 python manage.py runserver 默认是127.0.0.1:8000 python manage.py runserver 127.0.0.1

Django 框架篇(十): django自带的认证系统

Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点.它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据. 回到顶部 auth模块 from django.contrib import auth auth中提供了许多实用方法: authenticate()

Django框架介绍

Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布. 这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. 更多Django框架http://code.ziqiangxuetang.com/django/django-qrcode.htm

一 Django框架介绍——用pycharm创建Django项目

Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布. 这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. 更多Django框架http://code.ziqiangxuetang.com/django/django-qrcode.htm

Django框架的简介

Django框架的背景 Django是一款基于Python开发的全栈式一体化Web 应用框架.2003 年问世之初,它只是 美国一家报社的内部工具,2005 年 7 月使用 BSD 许可证完成了开源.其目的是削减代码量,简 单且迅速地搭建以数据库为主体的复杂Web 站点.它是全栈式框架,因此安装起来很简单,而 且使用者众多.这使得 Django除具有完备的官方文档之外,还有大量的关联文档.丰富的第三 方库可供使用.与其他框架相比,Django 用起来要轻松得多. Django框架的特点 1.完整