django的用法.docx

上传人:b****3 文档编号:5403984 上传时间:2022-12-16 格式:DOCX 页数:147 大小:4.34MB
下载 相关 举报
django的用法.docx_第1页
第1页 / 共147页
django的用法.docx_第2页
第2页 / 共147页
django的用法.docx_第3页
第3页 / 共147页
django的用法.docx_第4页
第4页 / 共147页
django的用法.docx_第5页
第5页 / 共147页
点击查看更多>>
下载资源
资源描述

django的用法.docx

《django的用法.docx》由会员分享,可在线阅读,更多相关《django的用法.docx(147页珍藏版)》请在冰豆网上搜索。

django的用法.docx

django的用法

python学习笔记--easy_install和pip

"AtoolforinstallingandmanagingPythonpackages"  --pip

easy_insall和pip都提供了在线一键安装模块的傻瓜方便方式,而pip是easy_install的改进版,提供更好的提示信息,删除package等功能。

老版本的python中只有easy_install,没有pip。

安装方法

#tar-xvfpip-1.4.1.tar.gz

#cdpip-1.4.1/

#sudopythonsetup.pyinstall

pip的使用方法:

安装包:

  

pipinstall***

查看安装的文件:

 

pipshow--files***

更新软件:

pipinstall--upgrade***

卸载软件:

pipuninstall***

这样就可以通过pip安装其他软件包,比如dangjo,nose,virtualenv,distribute等。

一、Django简介

1.web框架介绍

  具体介绍Django之前,必须先介绍WEB框架等概念。

  web框架:

别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。

  一般web框架的架构是这样的:

其它基于python的web框架,如tornado、flask、webpy都是在这个范围内进行增删裁剪的。

例如tornado用的是自己的异步非阻塞“wsgi”,flask则只提供了最精简和基本的框架。

Django则是直接使用了WSGI,并实现了大部分功能。

2.MVC/MTV介绍

  MVCXX百科:

全名ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

  通俗解释:

一种文件的组织和管理形式!

不要被缩写吓到了,这其实就是把不同类型的文件放到不同的目录下的一种方法,然后取了个高大上的名字。

当然,它带来的好处有很多,比如前后端分离,松耦合等等,就不详细说明了。

       

  模型(model):

定义数据库相关的内容,一般放在models.py文件中。

  视图(view):

定义HTML等静态网页文件相关,也就是那些html、css、js等前端的东西。

  控制器(controller):

定义业务逻辑相关,就是你的主要代码。

  

  MTV:

有些WEB框架觉得MVC的字面意思很别扭,就给它改了一下。

view不再是HTML相关,而是主业务逻辑了,相当于控制器。

html被放在Templates中,称作模板,于是MVC就变成了MTV。

这其实就是一个文字游戏,和MVC本质上是一样的,换了个名字和叫法而已,换汤不换药。

3.Django的MTV模型组织

  目录分开,就必须有机制将他们在内里进行耦合。

在Django中,urls、orm、static、settings等起着重要的作用。

一个典型的业务流程是如下图所示:

二、Django项目实例

1.程序安装

  python3.5、pip3及pycharm专业版自行安装。

pycharm不要使用免费版,它不支持Django。

(1)安装Django:

2.创建django项目

  在linux等命令行界面下,使用django提供的命令和vim也能进行项目开发。

但是,这里使用eclipse

  点击:

file-->project,出现下面的对话框。

选择PyDev/Django栏目,输入项目名称,这里采用国际惯例的mysite。

然后一直next就可以了

Django将自动生成下面的目录结构:

与项目同名的目录中是配置文件,templates目录是html文件存放也就是MTV中的T(手动新建)。

manage.py是django项目管理文件。

3.创建APP

  在每个django项目中可以包含多个APP,相当于一个大型项目中的分系统、子模块、功能部件等等,相互之间比较独立,但也有联系。

所有的APP共享项目资源。

右键点击mysite--->Django--->Createapplication

这样就创建了一个叫做app01的APP,django自动生成“app01”文件夹。

4.编写路由

  路由都在urls文件里,它将浏览器输入的url映射到相应的业务处理逻辑。

  简单的urls编写方法如下图:

 

5.编写业务处理逻辑

  业务处理逻辑都在views.py文件里。

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

 

6.运行web服务

  现在我们已经可以将web服务运行起来了。

  记得将app01写入到settings.py中

 

  命令行的方式是:

pythonmanage.pyrunserver127.0.0.1:

8000

在eclipse中--->runconfigurations

有这个提示,则表示启动成功,然后打开浏览器,输入127.0.0.1:

8000

修改一下url,添加“/index”,就一切ok了!

至此,一个最简单的django编写的web服务就启动成功了。

7. 返回HTML文件

  上面我们返回给用户浏览器的是什么?

一个字符串!

实际上这肯定不行,通常我们都是将html文件返回给用户。

  下面,我们写这么一个index.html文件:

再修改一下views文件:

为了让django知道我们的html文件在哪里,需要修改settings文件的相应内容。

但默认情况下,它正好适用,你无需修改。

 

接下来,我们可以重新启动web服务。

在浏览器刷新一下,你会看到带有样式的“helloworld”。

8.使用静态文件

  我们已经可以将html文件返还给用户了,但是还不够,前端三大块,html、css、js还有各种插件,它们齐全才是一个完整

的页面。

在django中,一般将静态文件放在static目录中。

接下来,在mysite中新建个static目录。

你的CSS,JS和各种插件都可以放置在这个目录里。

为了让django找到这个目录,依然需要对settings进行配置:

同样,在index.html文件中,可以引入js文件了:

 

重新启动web服务,刷新浏览器,查看结果。

9.接收用户发送的数据

  上面,我们将一个要素齐全的html文件返还给了用户浏览器。

但这还不够,因为web服务器和用户之间没有动态交互。

下面我们设计一个表单,让用户输入用户名和密码,提交给index这个url,服务器将接收到这些数据。

  先修改index.html文件

然后修改views.py文件

此时,重启web服务时,会出错,因为django有一个跨站请求保护机制,我们在settings文件中将它关闭。

再次进入浏览器,刷新页面:

输入点东西,然后我们在eclipse中可以看到相应的数据。

10.返回动态页面

  我们收到了用户的数据,但返回给用户的依然是个静态页面,通常我们会根据用户的数据,进行处理后在返回给用户。

这时候,django采用jinja2语言编写动态模板,jinja2会根据提供的数据,替换掉html中的相应部分,详细语法入门后再深入学习。

先改造views.py文件:

再改造index.html文件:

重启服务,刷新浏览器:

可以看到,我们获得了用户实时输入的数据,并将它实时展示在了用户页面上,这是个不错的交互过程。

11.使用数据库

  流程走到这里,django的MTV框架基本已经浮出水面了,只剩下最后的数据库部分了。

  上面我们虽然和用户交互得很好,但并没有保存任何数据,页面一旦关闭,或服务器重启,一切都将回到原始状态。

  使用数据库是毫无疑问的,下面使用mysql数据。

 在settings中,配置数据库相关的参数,如果使用自带的sqlite,不需要修改。

然后在mysql数据库创建mysite库

再编辑models.py文件,也就是MTV中的M。

 

这里我们创建了2个字段,分别保存用户的名字和密码。

接下来要在后台中通过命令创建数据库的表了。

有2条命令,分别是:

pythonmanage.pymakemigrations

再输入命令:

pythonmanage.pymigrate

或者在eclipse中,右键点击mysite--->django--->makemigrations

然后右键点击mysite--->django--->migrate

修改views.py中的业务逻辑

重启web服务后,刷新浏览器页面,之后和用户交互的数据都能保存到数据库中。

任何时候都可以从数据库中读取数据,展示到页面上。

至此,一个要素齐全,主体框架展示清晰的django项目完成了,其实很简单是不是?

三、Django总结

  作为python必须web框架的Django,它的功能强大,内容全面,但同时也意味着限制颇多,灵活性低,可修改性差,这就是鱼和熊掌不可兼得了。

我们学习Django,其实就是学习一个软件,要理解它的基本原理,把握它整体框架,牢记一些基本规则,剩下的就是不断深入细节,然后熟能生巧、经验多少的问题了,不存在多高深的不可掌握技术。

 

每天记录一点,就能多学一点,充实一点

 

python学习笔记--Django入门0安装dangjo

经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误。

现在终于找到了解决方法:

查看英文原版内容:

加入你使用的是CentOS系统或者Mac,默认版本是2.X,请及时更新版本到3.X,书中是这么说的:

Youcanseethat,intheaboveexample,PythoninteractivemodeisrunningPython2.7.Thisisatrapforinexperiencedusers.

OnLinuxandMacOSXmachines,itiscommonforbothPython2andPython3tobeinstalled.Ifyoursystemislikethis,you

needtotypepython3infrontofallyourcommands,ratherthanpythontorunDjangowithPython3.

对于没有经验的人来说,使用python2.7,这是一个陷阱!

Dangjo是支持python3的

 

内容参考  

刚刚接触python的,还不知道有pip或者easy_install这样的在线一键安装模块的傻瓜方式,在安装python软件时遇到各种奇怪的问题,所以建议先了解一下pip。

具体可以参考下一篇文章 python学习笔记--easy_install和pip

建议学习时更新python到新版本:

此处是python3.4.4

安装前准备:

yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel

 

官方发布版安装

从  下载安装最新的官方发布版。

注意:

如果python的版本不是很高,不建议下载高版本的Django,否则可能会有类似的报错:

 

Django使用了Python标准的 distutils 安装法,在Linux平台可能包括如下步骤:

 

tarxzvfDjango-*.tar.gz

cdDjango-*

sudopythonsetup.pyinstall

 Django初始化

第一次使用Django,必须进行初始化设置:

新建一个工作目录 /home/python/django/ ,然后进入该目录。

因为是使用的 setup.py 工具进行的Django安装, django-admin.py 应该已被加入了系统路径中。

在Windows平台上则需要更新 PATH 环境变量。

可以使用查看是否已经填加到了环境变量

whichdjango-admin.py

运行下面的命令在当前目录创建一个 mysite 目录。

django-admin.pystartprojectmysite

 mysite/ 包括下列这些文件:

__init__.py

manage.py

settings.py

urls.py

其中:

__init__.py :

让Python把该目录当成一个开发包(即一组模块)所需的文件。

manage.py :

一种命令行工具,可让你以多种方式与该Django项目进行交互。

settings.py :

该Django项目的设置或配置。

urls.py :

该Django项目的URL声明,即Django所支撑站点的内容列表

 

目录建议的位置:

根目录 之外 的某些目录中

 

开发服务器

 

Django带有一个内建的轻量级Web服务器,可供站点开发过程中使用。

这个服务器是用来快速开发站点,上线前无需使用apache。

该开发服务器会监测代码变动并将其自动重载,这样一来,你可快速进行项目修改而无需作任何重启。

 

 现在进入mysite目录,并运行下面命令。

你将看到如下输出:

python manage.py runserver

Validatingmodels...

0errorsfound.

Djangoversion1.0,usingsettings'mysite.settings'

Developmentserverisrunningathttp:

//127.0.0.1:

8000/

QuittheserverwithCONTROL-C.

该服务器不能作为生产中使用的服务器。

在同一时间,该服务器只能可靠地处理一次单个请求,并且没有进行任何类型的安全审计。

可能遇到的错误:

Youhaveunappliedmigrations;yourappmaynotworkproperlyuntiltheyareapplied.Run'pythonmanage.pymigrate'toapply

处理方法:

就按照提示来:

pythonmanage.pymigrate

 

 

为服务器指定主机或端口

默认情况下, runserver 命令在8000端口启动开发服务器,且只监听本机连接。

要想要更改服务器的IP和端口,加入参数:

pythonmanage.pyrunserver0.0.0.0:

8080

会让Django监听所有网络接口,因此也就让其它电脑可连接到开发服务器了。

 

现在用网页浏览器访问 http:

//127.0.0.1:

8000/ 

注意:

访问有时可能会很慢,只要启动没有报错,请耐心等待:

 出现这个页面,表示已经启动成功\(^o^)/YES!

python学习笔记--Django入门一网页显示时间

我的笔记是学习课程时做的,这个上边的文章讲的确实是非常的详细,非常感谢你们提供的知识。

 

上一篇随笔中已经配置好了Django环境,现在继续跟随来学习网页显示时间这个小功能:

这个简单的范例仅输出服务器的内部时钟,如图

开发的环境是CentOS6.7

首先,创建一个网页:

views.py

fromdjango.httpimportHttpResponse

importdatetime

defcurrent_datetime(request):

now=datetime.datetime.now()

html="Itisnow%s."%now

returnHttpResponse(html)

简单分析一下该代码:

函数current_datetime的第一段代码用来获取当前的时间并赋值给变量now;

第二段代码使用Python的格式化字符串(format-string)功能构造了一段HTML响应。

字符串里面的 %s 是占位符,字符串之后的百分号表示使用变量 now 的值替换 %s;

最后,该视图返回一个包含所生成响应的 HttpResponse 对象.

然后修改URL映射:

  views.py中的视图函数返回了包含当前日期和时间的一段HTML页面。

但是如何告诉Django使用这段代码呢?

这就时候就需要 URLconfs 了。

  URLconf就是一个映射表,用来调用函数视图。

用它来告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。

  上一节中执行 django-admin.py startproject 时,该脚本会自动为你建了一份URLconf(即 urls.py 文件)。

fromdjango.conf.urls.defaultsimport*

urlpatterns=patterns('',

#Example:

#(r'^mysite/',include('mysite.apps.foo.urls.foo')),

#Uncommentthisforadmin:

#(r'^admin/',include('django.contrib.admin.urls')),

分析:

   urlpatterns 变量定义了URL以及用于处理这些URL的代码之间的映射关系,Django期望能从 ROOT_URLCONF 模块中找到它。

现在修改该文件:

fromdjango.conf.urls.defaultsimport*

frommysite.viewsimportcurrent_datetime

urlpatterns=patterns('',

(r'^time/$',current_datetime),

分析:

首先,模块中引入了 current_datetime 视图。

接着,我们加入了 (r'^time/$', current_datetime)这就是 URLpattern ,它是一个Python元组,其第一个元素是简单的正则表达式,第二个元素是为该模式应用的视图函数。

 简单来说,我们只是告诉Django,所有指向URL /time/ 的请求都应由 current_datetime 这个视图函数来处理。

注意:

   我们将 current_datetime 视图函数作为对象传递,而不是调用它。

这是Python(及其它动态语言的)的一个重要特性:

函数是一级对象(first-classobjects),也就是说你可以像传递其它变量一样传递它们。

  r'^time/$' 中的 r 表示 '^time/$' 是一个原始字符串。

这样一来就可以避免正则表达式有过多的转义字符。

    不必在 '^time/$' 前加斜杠(/)来匹配 /time/ ,因为Django会自动在每个表达式前添加一个斜杠。

乍看起来,这好像有点奇怪,但是URLconfs可能由其它的URLconfs所引用,所以不加前面的斜杠可让事情简单一些。

    上箭头 ^  要求表达式对字符串的头部进行匹配,美元符号 $  则要求表达式对字符串的尾部进行匹配。

    最好还是用范例来说明一下这个概念。

如果我们用 '^time/' (结尾没有$),那么以 time/ 开始的 任意 URL都会匹配,比如 /time/foo 和 /time/bar ,不仅仅是 /time/ 。

同样的,如果我们去掉最前面的^( 'time/$' ),Django一样会匹配由 time/ 结束的 任意 URL /time/ ,比如/foo/bar/time/ 。

因此,我们必须同时用上^和$来精确匹配URL /time/ 。

不能多也不能少。

浏览器访问 http:

//127.0.0.1:

8000/time/ 应该就可以看到开头的网页显示时间的效果了。

Django处理请求的过程

 Django请求的过程是运行Django开发服务器和构造Web页面请求的本质所在。

pythonmanage.pyrunserver

执行上面的命令,从同一目录载入文件 settings.py 。

该文件包含了这个特定的Django实例所有的各种可选配置,其中一个最重要的配置就是 ROOT_URLCONF 。

 

ROOT_URLCONF

 告诉Django哪个Python模块应该用作本网站的URLconf。

通过命令 

1

django-admin.pystartproject

 会创建文件 settings.py 和 urls.py ,这是系统自动生成的 settings.py 里 ROOT_URLCONF 默认设置是 urls.py 。

当访问URL /time/ 时,Django根据 ROOT_URLCONF 的设置装载URLconf。

然后按顺序逐个匹配URLconf里的URLpatterns,直到找到一个匹配的。

当找到这个匹配的URLpatterns就调用相关联的view函数,并把 HttpRequest 对象作为第一个参数。

 

该view函数负责返回一个 HttpResponse 对象。

 

你现在知道了怎么做一个Django-powered页面了,真的很简单,只需要写视图函数并用URLconfs把它们和URLs对应起来。

你可能会认为用一系列正则表达式将URLs映射到函数也许会比较慢,但事实却会让你惊讶。

动态URL事例:

目标:

 /time/plus/1/ 显示当前时间+1个小时的页面

  /time/plus/2/ 显示当前时间+2个小时的页面,以此类推。

不建议的写法:

urlpatterns=patterns('',

(r'^time/$',current_da

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1