一.模块渲染  jinja2

  实现简单的字符串替换(动态页面)

  1.下载

pip install jinja2

示例 : html文件中

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Title</title>
</head>
<body>
    <h1>姓名:{{name}}</h1>
    <h1>爱好:</h1>
    <ul>
        {% for hobby in hobby_list %}
        <li>{{hobby}}</li>
        {% endfor %}
    </ul>
</body>
</html>

使用jinja2来渲染的python文件

from wsgiref.simple_server import make_server
from jinja2 import Template

def index():
    with open("index2.html", "r",encoding='utf-8') as f:
        data = f.read()
    template = Template(data)  # 生成模板文件
    ret = template.render({"name": "于谦", "hobby_list": ["烫头", "泡吧"]})  # 把数据填充到模板里面
    return [bytes(ret, encoding="utf8"), ]

# 定义一个url和函数的对应关系
URL_LIST = [
    ("/index/", index),
]

def run_server(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html;charset=utf8'), ])  # 设置HTTP响应的状态码和头信息
    url = environ['PATH_INFO']  # 取到用户输入的url
    func = None  # 将要执行的函数
    for i in URL_LIST:
        if i[0] == url:
            func = i[1]  # 去之前定义好的url列表里找url应该执行的函数
            break
    if func:  # 如果能找到要执行的函数
        return func()  # 返回函数的执行结果
    else:
        return [bytes("404没有该页面", encoding="utf8"), ]

if __name__ == '__main__':
    httpd = make_server('', 8000, run_server)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()

二.MVC框架和MTV框架

MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。

M:model.py  就是和数据库打交道用的,创建表等操作

V:View  视图(视图函数,html文件)

C:controller  控制器(其实就是我百度云代码里面那个urls文件里面的内容,url(路径)分发与视图函数的逻辑处理)

 2.MTV框架(django) (和MVC本质上一样)

1.M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。

2.T 代表模板 (Template):负责如何把页面展示给用户(html)。

3.V 代表视图(View):   负责业务逻辑,并在适当时候调用Model和Template。

4.除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,
  View再调用相应的Model和Template,MTV的响应模式如下所示:

三. Django 下载

  1.  安装代码

pip3 install django==1.11.9

2.在命令行中的使用

  ①切换到要安装django的文件夹下

  ② 创建项目框架

    输入>   django-admin startproject 项目名

  ③切换到 "项目名" 文件下

    输入> cd 项目名

  ④ 创建 app 文件

    输入>  django-admin startapp app名

  ⑤ 启动

    输入>  python manage.py runserver 127.0.0.1:8000

  

  3.在pycharm 中的使用

  ①目录结构

项目名
                manage.py 

          项目名
                    settings.py 项目全局的配置信息
               必须要有('DIRS': [os.path.join(BASE_DIR, 'templates')])   
                    urls.py  路径和函数的对应关系
                    wsgi.py  socket相关的

                app01
                    views.py 视图函数 就是业务代码逻辑
                    models.py 数据库相关

②.回复消息

③.回复html

④.引入新网页改变三个地方

    1) 在 templates文件 中插入html文件

      

    2) 在 urls.py 文件中引入  views   ,并写好映射关系

  3) 在 views.py 文件中写好对应函数

⑤form表单的处理

            input标签都写在form表单里面
                ①input name属性必须要写
                    用户名 input text name='username'     输入的是:ww
                    密码   input password name='password' 输入的是:666
               ② input type='submit'

         ③ form action='提交数据的路径' method='post\get'
            action='http://127.0.0.1:8000/auth/'
              现象:
         get 'http://127.0.0.1:8000/auth/?username=ww&password=666'
             在地址中可见
                post 'http://127.0.0.1:8000/auth/'
                    请求数据部分  地址栏不可见

        urls.py 文件中

            url(r'^auth/', views.auth),

     view.py 文件中

            def auth(request):

                request.method  获取请求方式get\post

                request.GET 得到请求数据(就是个大字典 )
                uname = request.GET.get('username')
                pword = request.GET.get('password')

                post请求数据的获取方式
                #uname = request.POST.get('username')

                取数据,数据库查询数据 返回对应结果
                return HttpResponse('xxx')
复制代码

day51 django第二天 django初识的更多相关文章

  1. day051 django第二天 django初识\代码

    模板渲染 JinJa2 from wsgiref.simple_sever import make_sever from jinjia2 import Template def index(): wi ...

  2. 第二十章 Django数据库实战

    第二十章 Django数据库实战 第一课 获取单表单数据的三种方式: urls.py中的路由代码: path('busniess',views.busniess), views.py中代码: def ...

  3. Django框架(一)-Django初识

    Django初识 一.Web框架本质—自己实现Web框架 1.所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端 import socket sk = sock ...

  4. Web框架之Django_01初识(三大主流web框架、Django安装、Django项目创建方式及其相关配置、Django基础三件套:HttpResponse、render、redirect)

    摘要: Web框架概述 Django简介 Django项目创建 Django基础必备三件套(HttpResponse.render.redirect) 一.Web框架概述: Python三大主流Web ...

  5. 第二天 django apache

    1. 475  brew tap homebrew/apache 476  brew install mod_wsgi 477  ls /usr/local/Cellar/mod_wsgi/4.5.7 ...

  6. django第二个项目--使用模板

    第一步: 创建新项目secondproject cd /tmp/django-admin startproject secondeproject 第二步: 创建一个用于放置模板文件夹 cd /tmp/ ...

  7. [Django高级]理解django中的中间件机制和执行顺序

    原文来自 Understanding Django Middlewares, 这篇文章从整体上介绍了django中中间件定义,作用,和怎么样自己写中间件 –orangleliu. 注:middlewa ...

  8. Django组件(五) Django之ContentType组件

    基础使用 -contenttype组件 -django提供的一个快速连表操作的组件,可以追踪项目中所有的APP和model的对应关系,并记录在ContentType表中. 当我们的项目做数据迁移后,会 ...

  9. 简单了解一下什么是Django或者说Django是做什么的?

    Django是什么? Django是一个基于Python的Web应用框架.它与Python的另外一个Web 框架 Flask最大的区别是,它奉行 “包含一切” 的哲学.该理念即为:创建 Web 应用所 ...

随机推荐

  1. Linux之vi/vim编辑器

    1.概述 所有的Unix like系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在,但是目前我们使用比较多的是 vim 编辑器. vim具有程序编辑的能力,可以主动地以字体颜色辨别语法的 ...

  2. java基础 (二)之HashMap,HashTable,ConcurrentHashMap区别

    HashTable: put方法加了同步锁synchronized,底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable, ...

  3. MySQL中update修改数据与原数据相同会再次执行吗?

    作者:powdba 来源:阿里云栖社区 一.背景 本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗? 二.测试环境 MySQL5 ...

  4. Python下探究随机数的产生原理和算法

    资源下载 #本文PDF版下载 Python下探究随机数的产生原理和算法(或者单击我博客园右上角的github小标,找到lab102的W7目录下即可) #本文代码下载 几种随机数算法集合(和下文出现过的 ...

  5. 『TensorFlow』读书笔记_Inception_V3_上

    1.网络背景 自2012年Alexnet提出以来,图像分类.目标检测等一系列领域都被卷积神经网络CNN统治着.接下来的时间里,人们不断设计新的深度学习网络模型来获得更好的训练效果.一般而言,许多网络结 ...

  6. xxx征集系统项目目标文档

    分组:每四人一组 主题:xxx征集系统 成果: 讨论结束后,每组提交一份课堂讨论记录(电子版发表到博客上,纸质版小组成员签名,下节课提交). 每人根据课堂讨论结果提交一份系统利益相关者描述案例.撰写项 ...

  7. 团队作业8——敏捷冲刺(Beta阶段)

    Beta阶段--第1篇 Scrum 冲刺博客(计划) https://www.cnblogs.com/just-let-it-go/p/9061664.html Beta阶段--第2篇 Scrum 冲 ...

  8. python3练习-发送IP地址到邮箱(使用日志)

    看了下python下的logging模块,和java的log4j差不多,把之前的代码改为使用log配置的方式实现功能(需求和之前的相同,地址"http://www.cnblogs.com/G ...

  9. 黏包-黏包的成因、解决方式及struct模块初识、文件的上传和下载

    黏包: 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包. 只有TCP协议中才会产生黏包,UDP协议中不会有黏包(udp协议中数 ...

  10. SocketServer模块,hmac模块验证client合法性

    hmac模块: 1.模块初识: import hmac # h = hmac.new() #括号里要给它连个bytes类型,一个是自定义的secret_key,一个是你想进行加密的bytes # 密文 ...