MCV思想:

M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

优点:

1. 低耦合性

视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码。

2. 高重用性&可适用性

MVC允许你使用不同样式的视图来访问同一服务器端代码,例如适用手机或者PC端购物,虽然购物方式不通,但是处理订购产品的方式是一样的。因为从模型返回的数据没有进行格式化,所以可以被不同的界面使用:html/wap

MVT:

1. 浏览器发送请求到web服务器

2. Web服务器把这个请求转交到一个WSGI

名词解释:WSGI

Python web开发中,服务端程序可分为2个部分:

服务器程序(用来接收、整理客户端发送的请求)

应用程序(处理服务器程序传递过来的请求)

在开发应用程序的时候,我们会把常用的功能封装起来,成为各种框架,比如Flask,Django,Tornado(使用某框架进行web开发,相当于开发服务端的应用程序,处理后台逻辑)

但是,服务器程序和应用程序互相配合才能给用户提供服务,而不同应用程序(不同框架)会有不同的函数、功能。 此时,我们就需要一个标准,让服务器程序和应用程序都支持这个标准,那么,二者就能很好的配合了

WSGI:wsgi是python web开发的标准,类似于协议。它是服务器程序和应用程序的一个约定,规定了各自使用的接口和功能,以便二和互相配合。

3. 请求生成一个被称为environ的python字典,传递过去几个中间件层,最终到达django应用

4. Urlconf包含在urls.py中,django找到对应url的视图(View)看来处理http请求。(请求是httprequest,一个python字典对象)

5. 被选中的视图要完成:

1) 通过模型与数据库对话

2) 使用模板渲染html

3) 返回一个纯文本响应

4) 抛出一个异常

6. Httpresponse对象离开django后被渲染成一个字符串

7. 在浏览器看到一个梅花的渲染后的web界面

编写路由:

1. 需要先导入对应app的views文件

2. 对函数url()调用:接受三个实参:

1)第一个是一个正则表达式,r让python将接下来的字符串视为原始字符串;引号告诉python正则表达式始于何处终于何处,脱字符^让python查看字符串的开头,美元符号$让python查看字符串的末尾。     Python忽略项目的基础url,如果不匹配返回错误界面。

2)第二个参数指定了要调用的视图函数,匹配时将调用views.index

3)第三个将将这个url模式的名称指定为index,当需要提供这个主页的链接时可以使用这个名称,而不编写url。

编写视图:

导入HttpResponse模块

Request参数必须有,封装了用户请求的所有内容

不可以直接return “hello world”,不能直接返回字符串,需要用这个类封起来,这是django的规则,不是python的。

通过上面两个步骤,我们将index这个url指向了views里的index()函数,它接收用户请求,并返回一个“hello world”字符串。

Render()根据视图提供的数据渲染响应

定义模型:

所谓ORM:对象关系映射,主要实现模型对象到关系数据库数据的映射

class Person(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField()

    def __unicode__(self):
        return self.name

Model是django中一个定义了模型基本功能的类,Person类含有两个属性:name和age。

属性name是一个charfield,由字符或文本组成的数据。

Unicode方法是为了告诉django默认使用那个属性来展示有关主题的信息。

建库

python manage.py makemigrations

命令makemigrations让django确定如何让修改数据库,

输出表明django创建了一个0001.py的迁移文件,这个文件将在数据库中为模型Person创建表。

Python manage.py migrate

应用了这种迁移,让django替我们修改数据库

管理网站:

Django提供的管理网站(admin site)让我们可以轻松地处理模型,所以建立管理网站,添加person。

1. 创建超级用户

python manage.py createsuperuser

2. 向管理网站注册模型

from myapp.models import Person
# Register your models here.
admin.site.register(Person)

导入我们要注册的模型Person

再使用admin.site.register()让django通过管理网站管理我们的模型

from models import Person

# Create your views here.
def index(request):
     #return HttpResponse("Hello World!")
     return render(request,"index.html")

def person(request):
     names = Person.objects.order_by(id)
     context = {'names':names}
     return render(request,'person.html',context)

<ul>
    {% for name in names %}
        <li>{{ name }}</li>
    {% endfor %}
</ul>

<a href="{% url 'index' %}">index地址</a>

【Python-Django讲义】针对django的ppt讲义的更多相关文章

  1. Python之路,Day16 - Django 进阶

    Python之路,Day16 - Django 进阶   本节内容 自定义template tags 中间件 CRSF 权限管理 分页 Django分页 https://docs.djangoproj ...

  2. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

  3. Python学习笔记_04:Django框架简介

    目录 1 什么是Django? 2 Django框架的开发环境搭建 3 Django操作MySql数据库简介 4 功能强大的Django管理工具应用 1 什么是Django? Django是应用于We ...

  4. python web框架之django环境搭建

    一.django环境搭建 https://www.djangoproject.com/download/ 下载适合自己的版本,在右边有压缩包版本的,也可以到git上去拽.我用的python27,下载的 ...

  5. python virtualenv环境运行django

    python virtualenv环境运行django 安装前准备 检查pip版本与python版本是否一致 [root@localhost bin]# whereis pip pip: /usr/b ...

  6. python web框架——扩展Django&tornado

    一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...

  7. Windows上python开发--2安装django框架

    Windows上python开发--2安装django框架 分类: 服务器后台开发2014-05-17 21:22 2310人阅读 评论(2) 收藏 举报 python django 上一篇文章中讲了 ...

  8. windows下安装python,安装框架django。

    第一步:  首先下载python安装包: 第二步:安装          双击安装包,安装程序.           这里安装到C盘   文件夹命名为  python33. 正在安装......... ...

  9. python学习笔记--Django入门三 Django 与数据库的交互:数据建模

    把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的 Model-View-Controller (MVC)模式.在这个模式中, Model 代表数据存取层,View 代表的是系统中 ...

  10. Python之路,Day15 - Django适当进阶篇

    Python之路,Day15 - Django适当进阶篇   本节内容 学员管理系统练习 Django ORM操作进阶 用户认证 Django练习小项目:学员管理系统设计开发 带着项目需求学习是最有趣 ...

随机推荐

  1. kmp(所有长度的前缀与后缀)

    http://poj.org/problem?id=2752 Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536 ...

  2. 【Linux】php7.2.8 + xdebug + composer + php代码覆盖率 + jenkins配置 (实操记录,亲测可用)

        [一.linux安装php 7.2.8] 1.wget http://nginx.org/download/nginx-1.9.9.tar.gz              # nginx可不安 ...

  3. NGUI的下拉框的使用(popup list script)

    一,我们先添加一个sprite,选择sprite,右键选择attach,添加box collider, 然后右键选择attach,添加popup list script ,我们给popup list ...

  4. linux篇—Nginx反向代理负载均衡

    一.环境准备 反向代理功能架构 3台web服务器,组建出web服务器集群 web01 10.0.0.7 172.16.1.7 web02 10.0.0.8 172.16.1.8 web03 10.0. ...

  5. java 指定日期后n天

    RT 算时间本来就是我的弱项:不废话了,贴代码 想传什么参数自己在改改就ok,传入String,放回String public class Text { public static void main ...

  6. (ACM模板)二分查找

    二分是一个比较大的概念,广义上把东西(可能是问题,区间等等)一分为二都是二分. 这里讲二分查找. 据说只有10%的程序员能写对二分.虽然二分是一个简单的算法.但是其变化和细节却并不简单. 整数二分: ...

  7. java定义类

    package java04; /* * 定义一个类,用来模拟“学生”,其中包含量两个组合部分 * * 格式: * public class ClassName{ * //成员变量 * //成员方法 ...

  8. 前端每日实战:72# 视频演示如何用纯 CSS 创作气泡填色的按钮特效

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/eKqZjy 可交互视频 此视频是可 ...

  9. python wxpython

    pip install wxpython import wxapp = wx.App(False)frame = wx.Frame(None, wx.ID_ANY, "Hollo World ...

  10. thread 类详解

    java.lang.Thread类详解 一.前言 位于java.lang包下的Thread类是非常重要的线程类,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前 ...