![点击分享此内容可以赚币 分享](/master/images/share_but.png)
一步一步学Django.doc
《一步一步学Django.doc》由会员分享,可在线阅读,更多相关《一步一步学Django.doc(53页珍藏版)》请在咨信网上搜索。
1、。第一讲 入门1 开篇Django 是新近出来的 Rails 方式的 web 开发框架。在接触 Django 之前我接触过其它几种 Python 下的 web framework, 但感觉 Karrigell 是最容易上手的。不过 Django 从我个人的感觉上来看,它的功能更强大,社区也很活跃,高手众多,发展也是极为迅速。3Django的入门体验但 Django 呢?如果说最简单的web体验 Hello, Django! 如何写呢?决不会象 Karrigell 那样简单,只从它提供的教程来看,你无法在安装后非常 Easy 地写出一个 Hello, Django! 的例子,因为有一系列的安装和
2、准备工作要做。那么下面我把我所尝试写最简单的 Hello, Django! 的例子写出来。请注意,我测试时是在 Windows XP 环境下进行的。3.1安装python setup.py install参考文档 Django installed,一般地,Django 安装前还需要先安装 setuptools 包。可以从 PyPI 上搜到。目前最新的版本是 0.95 版,可以从 Django 的主页上面下载。如果你想从老的 0.91 迁移到最新版本,可以参阅 RemovingTheMagic 文档。安装后,建议检查 pythoninstalldir/Scripts 目录是否在你的 PATH 环
3、境中,如果不在,建议将这个目录设置到 PATH 中。因为如果你采用标准的 Python 安装方法,那么 Django 会自动在 Scripts 目录下安装 django-admin.py 程序。这样,一旦你设置了 Scripts 在 PATH 中,就可以在命令行下任何目录中执行 django-admin.py 了。3.2生成项目目录因为 Karrigell 可直接开发,因此放在哪里都可以。而 Django 是一个框架,它有特殊的配置要求,因此一般不需要手工创建目录之类的工作, Django 提供了 django-admin.py 可以做这件事。为使用 django-admin.py ,建议将
4、Python 的 Scripts 目录加入到 PATH 环境变量中去。django-admin.py startproject newtest这样就在当前目录下创建了一个 newtest 目录,进去入可以看到有四个文件:这个 newtest 将是我们以后工作的目录,许多讲解都是基于这个目录的。_init_.py 表示这是一个 Python 的包 manage.py 提供简单化的 django-admin.py 命令,特别是可以自动进行 DJANGO_SETTINGS_MODULES 和 PYTHONPATH 的处理,而没有这个命令,处理上面环境变量是件麻烦的事情 settings.py 它是d
5、jango的配置文件 uls.py url映射处理文件,Django的url映射是url对某个模块方法的映射,目前不能自动完成 在 0.91 版, django-admin.py startproject 会生成 apps 目录。但 0.95 版之后已经没有了。虽然 django-admin.py 为我们生成了许多东西, 而且这些东西在以后的开发中你都需要熟悉,但现在我们的目标是最简单的体验,就认为我们不需要知道它们都有什么用吧。项目创建好了,那么我们可以启动服务器吗? Django 为了开发方便,自带了一个用于开发的 web server。在 0.91 版,你需要至少修改一下 setting
6、s.py 中的 DATABASE_ENGINE ,如果你不改,那么 Django 会报错。在0.95版之后,不再需要设置了。3.3.1启动 web server:别急呀,还没看见 Hello, Django! 在哪里呢。是的,我只是想看一看, Django 能否启动。manage.py runserver一旦出现:Validating models.0 errors found.Starting server on port 8000 with settings module newtest.settings.Go to http:/127.0.0.1:8000/ for Django.Qui
7、t the server with CONTROL-C (Unix) or CTRL-BREAK (Windows).说明 Django 真的启来了。在浏览器中看一下,有一个祝贺页面,说明成功了。3.3.2更改主机或端口 默认情况下, runserver 命令在 8000 端口启动开发服务器,且只监听本机连接。要想要更改服务器端口的话,可将端口作为命令行参数传入: python manage.py runserver 8080还可以改变服务器监听的 IP 地址。要和其他开发人员共享同一开发站点的话,该功能特别有用。下面的命令: python manage.py runserver 0.0.0.
8、0:8080会让 Django 监听所有网络接口,因此也就让其它电脑可连接到开发服务器了3.4增加一个helloworld的app吗?在 Django 中绝大多数应用都是以app形式存在的,但一定要加吗?其实并不一定。在 Django 中,每个app就是一个子包,真正调用时需要通过 URL Dispatch 来实现url与模块方法的映射。这是 Django 的一大特色,但也是有些麻烦的地方。不用它,你无法发布一个功能,如果在 Django 中存在一种缺省的简单映射的方式,这样我想可以大大提高 Django 的入门体验度。不过在比较大的项目中,使用 app 还是一个非常好的方式,它可将项目功能进
9、行分割,以便组织和代码的重用。因此根据 URL Dispatch 的机制,我们只要保证 Django 可以在正确的地方找到方法进行调用即可。那么我们就根本不去创建一个app了。在 newtest 目录下建一个文件 helloworld.py 内容为:from django.http import HttpResponsedef index(request): return HttpResponse(Hello, Django.)0.95 版之后对许多 Django 模块都做了简化。具体可参考: NamespaceSimplification 文档。3.5修改urls.pyfrom django
10、.conf.urls.defaults import *urlpatterns = patterns(, # Example: # (rnewtest/,include(newtest.apps.foo.urls.foo), (r$, newtest.helloworld.index), # Uncomment this for admin:#(radmin/, include(django.contrib.admin.urls),)上面的 r$ 是为了匹配空串,也就是形如: http:/localhost:8000/ 。如果这时 web server 已经启动了,那么直接刷新页面就行了。现在
11、觉得 Django 是不是简单多了,除了创建一个项目的操作,然后可能要修改两个配置文件。4结论Django 本身的确是一种松散的框架组合,它既复杂又简单。复杂是因为如果你想使用它的自动化的、高级的功能你需要学习很多的东西,而且它的教程一上来就是以这种过于完整的例子进行展示,自然会让你觉得很麻烦。不过看了我的讲解之后,是不是觉得还是挺简单的。那么我们就先以无数据库的方式进行下去,一点点地发掘 Django 的功能特性吧。第二讲 生成一个web form 做加法的简单例子1引言随着学习,我们的例子也开始复杂了,下一步我想实现一个简单的 web 加法器。界面会是这样:如何处理页面表格提交的数据,并且
12、会对 URL Dispatch 作更进一步的解释。2创建 add.py 文件我们先创建一个 add.py 文件。(由于我们还没有涉及到 Django 的模型,因此象 add.py 这样的东西叫什么呢?还是称其为 View 吧。因为在 django 中,View 是用来显示的,它代替了一般的 MVC 中的 Control 的作用,因为 Django 中不是 MVC 而是 MTV (Model Template View)from django.http import HttpResponsetext = + def index(request): if request.POST.has_key(
13、a): a = int(request.POSTa) b = int(request.POSTb) else: a = 0 b = 0 return HttpResponse(text % (a, b, a + b)请注意 action 为 /add/ ,在 Django 中链接后面一般都要有 / ,不然有可能得不到 POST 数据。有关更详细的关于常见问题可以参阅 NewbieMistakes 文档。这里只有一个 index 方法。所有在 view 中的方法第一个参数都会由 Django 传入 request 对象,它就是请求数据对象,它是由 Django 自动生成。其中有 GET 和 PO
14、ST 属性,分别保存两种不同的提交方式的数据,它们都可以象字典一样工作。更多关于 request 的内容参见 Request and response objects 文档。那么我的想法就是:进入页面后(就是上面的效果),页面上有两个输入文本框,一个是提交按钮,一个是显示结果的文本框。在两个输入文本框中输入整数,然后点击提交(=号按钮),将返回相同的页面,但结果文本框中将显示两数相加的和。两个输入文本框分别定义为 a 和 b 。这里的逻辑就是:先判断 POST 数据中是否有变量 a ,如果没有则表示是第一次进入,则 a, b 初始为 0 ,然后返回页面。如果有变量 a ,则计算结果,返回页面。
15、3修改urls.py,增加 add 的 url 映射。from django.conf.urls.defaults import *urlpatterns = patterns(, # Example: # (rtestit/, include(newtest.apps.foo.urls.foo), (r$, newtest.helloworld.index), (radd/$, newtest.add.index), # Uncomment this for admin:# (radmin/, include(django.contrib.admin.urls),)4 启动 server5
16、在浏览器测试:http:/localhost:8000/add,你会看到和我相似的界面,然后输入整数试一试。6补充说明1. 在 form 中的 method=post 。你当然可以使用 get ,但是在 Django 的设计风格中认为,使用 POST 表示要对数据进行修改,使用 GET 则只是获取。2. Django 提供了 URL Dispatch 文档,专门讲解有关 url 映射的东西。其中有一部分是关于 url 的正则表达式解析的。原本我认为象 Karrigell 中一样,定义在 form 中的变量会自动映射为方法的参数,但是我错了。方法中的参数是从 url 中通过正则表达式解析出来的,
17、或者是在 url_conf(即 urls.py 文件)中指定的。因此它与 Karrigell 一点也不一样。因此,如果你想从 POST 或 GET 数据中得到值,那么象我一样去做好了。使用 request.POST 或 request.GET 或还有一个可以“统吃”的方法 request.REQUEST ,它们是一个字典数据,使用起来也算方便。 从这里我更想了解方法中参数的使用,当然这个例子并没有,有机会再使用吧。关于正则表达式解析参数在 blog 和 rss 中用得是非常多的。第三讲 使用Template的简单例子1引言从上一例我们看到,表格的生成是直接在 index() 函数中返回的 HT
18、ML 代码,这种混合方式对于大型开发非常不好,下面我们就学习模板的使用。 Django 自带有模板系统,但你可以不使用它,只要在 return 前使用自已喜欢的模板系统进行处理,然后返回即可。但 Django 自带的模板系统有很多特点,我不做过多的说明。我只是想使用它。现在我的问题就是:我有一个通讯录数据,我想使用一个表格来显示。为了方便,我们不需要使用数据库,因此我把它存在 view 文件中。2创建 list.py#coding=utf-8from django.shortcuts import render_to_responseaddress = name:张三, address:地址一
19、, name:李四, address:地址二 def index(request): return render_to_response(list.html, address: address)我使用了汉字,并且字符的编码使用了 utf-8 ,请注意,而且以后如果不特别注明,所有的带汉字的文件,包括模板都将使用 utf-8 编码。这里使用了一个新方法是 render_to_response ,它可以直接调用模板并返回生成好的文本。它接收两个参数,第一个是模板的文件名。在 Django 0.91 中,模板文件都是以 .html 结尾的,并且使用时是不带后缀的。但 0.95 版本取消了缺省模板后缀
20、的设置,因此模板文件名必须是完整的,不再有默认后缀了。第二个参数是一个字典,这里只有一个 Key ,名字是 address ,它的值是一个字典的列表。只要注意模板所接收的就是这样的字典和包含字典的列表就行了。在0.91中 render_to_response 是在 django.core.extensions 中的,而到了 0.92 转变为 django.shortcuts 。3在 newtest 中创建 templates 目录:用来存放模板文件4修改 settings.pyTEMPLATE_DIRS = ( # Put strings here, like /home/html/djang
21、o_templates. # Always use forward slashes, even on Windows. ./templates,)如果有多个模板目录,加进去就行了。 Django 会按顺序搜索的。Django 还支持在 App 中定义一个 templates 目录。这样 Django 在启动时会检查所有安装的的 App 的 templates 目录,如果存在,则将路径的搜索放在 TEMPLATE_DIRS 之后。这样就可以很方便地管理你的模板了。5创建 templates/list.html通讯录 姓名地址 % for user in address % user.name u
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一步一步 Django
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。