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(前缀出现次数next应用)

    http://acm.hdu.edu.cn/showproblem.php?pid=3336 Count the string Time Limit: 2000/1000 MS (Java/Other ...

  2. Codeforces 1162E Thanos Nim(博弈)

    一道有意思的博弈题.首先我们考虑一种必败情况,那就是有一方拿光了一堆石子,显然对方是必胜,此时对方可以全部拿走其中的n/2,那么轮到自己时就没有n/2堆,所以此时是必败态.我们先对所有石子堆sort, ...

  3. Day4 --- Python中的控制结构(if, for, while, try...expect..)

    if for while 可以参考 : https://www.cnblogs.com/HYLering/p/10051906.html try  是异常处理里面的 可以参考 : https://ww ...

  4. iBatis——自动生成DAO层接口提供操作函数(详解)

    iBatis——自动生成DAO层接口提供操作函数(详解) 在使用iBatis进行持久层管理时,发现在使用DAO层的updateByPrimaryKey.updateByPrimaryKeySelect ...

  5. vue动态设置Iview的多个Input组件自动获取焦点

    1.html,通过ref=replyBox设置焦点元素,以便后续获取 // 动态设定自动获取焦点按钮 <p class="text-right text-blue fts14 ptb1 ...

  6. 解决嵌套在ScrollView中的TableView滑动手势冲突问题

    最近在迭代开发公司项目的时候遇到了一个问题,在可以左右切换标签视图的ScrollView中嵌套了两个TableView用于展示视图,感觉一切so easy的情况下,问题出现了,因为左右两个视图既可以实 ...

  7. 在Intellij上开发项目发布到tomcat时,同一个局域网内的其他机子访问不到自己电脑上tomcat中的项目,只能本机访问

    在Intellij上开发项目发布到tomcat时,同一个局域网内的其他机子访问不到自己电脑上tomcat中的项目,只能本机访问 问题描述:在Intellij上开发项目发布到tomcat时,同一个局域网 ...

  8. 对于一般情况X1+X2+X3+……+Xn=m 的正整数解有 (m-1)C(n-1) 它的非负整数解有 (m+n-1)C(n-1)种

    对于一般情况X1+X2+X3+……+Xn=m 的正整数解有 (m-1)C(n-1) 它的非负整数解有 (m+n-1)C(n-1)种

  9. Centos 安装.NET Core环境

    https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install 一.概述 本篇讨论如何把项目发布到Linux环境,主要包括 ...

  10. CF 187D BRT Contract

    传送门 给了60分的nq暴力还是很资磁的!!! 基本上想的跟正解差不多了但是刚T2去了就没想细节QAQ 大概就是我们逆序求一下每一个点从0时刻开始走到终点需要用的时间f 我们需要找到它遇到的第一个红灯 ...