django的用法.docx
- 文档编号:5403984
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:147
- 大小:4.34MB
django的用法.docx
《django的用法.docx》由会员分享,可在线阅读,更多相关《django的用法.docx(147页珍藏版)》请在冰豆网上搜索。
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."%nowreturnHttpResponse(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- django 用法