一步一步学django

上传人:小** 文档编号:88024497 上传时间:2019-04-17 格式:DOC 页数:50 大小:1.30MB
返回 下载 相关 举报
一步一步学django_第1页
第1页 / 共50页
一步一步学django_第2页
第2页 / 共50页
一步一步学django_第3页
第3页 / 共50页
一步一步学django_第4页
第4页 / 共50页
一步一步学django_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《一步一步学django》由会员分享,可在线阅读,更多相关《一步一步学django(50页珍藏版)》请在金锄头文库上搜索。

1、一步一步学Django 第51 页第一讲 入门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/Script

3、s 目录是否在你的 PATH 环境中,如果不在,建议将这个目录设置到 PATH 中。因为如果你采用标准的 Python 安装方法,那么 Django 会自动在 Scripts 目录下安装 django-admin.py 程序。这样,一旦你设置了 Scripts 在 PATH 中,就可以在命令行下任何目录中执行 django-admin.py 了。3.2生成项目目录因为 Karrigell 可直接开发,因此放在哪里都可以。而 Django 是一个框架,它有特殊的配置要求,因此一般不需要手工创建目录之类的工作, Django 提供了 django-admin.py 可以做这件事。为使用 djang

4、o-admin.py ,建议将 Python 的 Scripts 目录加入到 PATH 环境变量中去。django-admin.py startproject newtest这样就在当前目录下创建了一个 newtest 目录,进去入可以看到有四个文件:这个 newtest 将是我们以后工作的目录,许多讲解都是基于这个目录的。_init_.py 表示这是一个 Python 的包 manage.py 提供简单化的 django-admin.py 命令,特别是可以自动进行 DJANGO_SETTINGS_MODULES 和 PYTHONPATH 的处理,而没有这个命令,处理上面环境变量是件麻烦的事情

5、 settings.py 它是django的配置文件 uls.py url映射处理文件,Django的url映射是url对某个模块方法的映射,目前不能自动完成 在 0.91 版, django-admin.py startproject 会生成 apps 目录。但 0.95 版之后已经没有了。虽然 django-admin.py 为我们生成了许多东西, 而且这些东西在以后的开发中你都需要熟悉,但现在我们的目标是最简单的体验,就认为我们不需要知道它们都有什么用吧。项目创建好了,那么我们可以启动服务器吗? Django 为了开发方便,自带了一个用于开发的 web server。在 0.91 版,你

6、需要至少修改一下 settings.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

7、/ for Django.Quit 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

8、runserver 0.0.0.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修改ur

10、ls.pyfrom django.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 reque

13、st.POST.has_key(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 自

14、动生成。其中有 GET 和 POST 属性,分别保存两种不同的提交方式的数据,它们都可以象字典一样工作。更多关于 request 的内容参见 Request and response objects 文档。那么我的想法就是:进入页面后(就是上面的效果),页面上有两个输入文本框,一个是提交按钮,一个是显示结果的文本框。在两个输入文本框中输入整数,然后点击提交(=号按钮),将返回相同的页面,但结果文本框中将显示两数相加的和。两个输入文本框分别定义为 a 和 b 。这里的逻辑就是:先判断 POST 数据中是否有变量 a ,如果没有则表示是第一次进入,则 a, b 初始为 0 ,然后返回页面。如果有变量 a ,则计算结果,返回页面。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), (r

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号