Python Django快速入门(一)

配置环境

安装配置Python,Django,Eclipse集成开发环境+PyDev插件

Django安装方法可参考《Windows下安装Python和Django》

http://www.paincker.com/windows-django-setup

Eclipse插件的安装可参考《Eclipse插件安装/查看/卸载方法完全总结》

http://www.paincker.com/eclipse-plugins-manage

新建工程

新建一个Workspace文件夹,例如E:\Django,将Eclipse的Workspace设置为这个目录

在Windows下,启动cmd并切换到Workspace目录,执行django-admin.py startproject WebServer,就会生成一个WebServer子目录,如图。这个E:\Django\WebServer目录就是我们将要使用的工程目录。注意,这里直接执行了py文件,因为py文件打开方式已经默认关联了Python,如果没有关联,可以执行python ***.py,后面不再重复。

在这个工程目录下,还有一个WebServer子目录,包含下面几个Python文件

在Eclipse中新建PyDev工程,取名WebServer,创建的工程中就会包含上一步自动生成的文件

启动服务器

Windows环境下,按住Shift键,在工程目录中空白处右击,选择“在此处打开命令窗口”,即可快速启动cmd窗口。

在工程目录中运行cmd命令:manage.py runserver 0.0.0.0:8000,如图。其中参数0.0.0.0表示监听所有网卡,8000为监听的端口。

打开浏览器,输入http://localhost:8000,即可打开默认的Django页面如下。注意不要忘了输入端口号8000,否则是访问不了的(如果设置成HTTP默认的80端口,则网址可以不输入端口号)。

新建应用

在工程目录下执行manage.py startapp app,即可新建一个名为app的应用。此时在工程目录生成了app文件夹。

添加模板文件

Django使用了MVC的设计思想,下面我们添加模板文件。模板文件可以继承,首先在templates目录中写一个父模板文件base.html。

再写两个子模板文件datetime.html和hours_ahead.html,均继承自父模板文件base.html,内容分别如下。

在settings.py中添加设置项TEMPLATE_DIRS,即模板文件夹,如图。其中BASE_DIR为工程目录,魔术变量__file__对应了settings.py自身的完整路径,os.path.dirname方法返回其所在的文件夹,执行了两次,得到BASE_DIR,刚好是工程目录。而模板文件夹在BASE_DIR/app/templates中,我们用os.path.join方法连接文件夹路径,即可得到。

添加视图控制代码

在app/views.py中添加以下代码。

hello方法实现的是最简单的Hello World页面,直接输出字符串形式的HttpResponse。

datetime1方法输出的是当前时间,通过datetime中相应的方法获取时间并格式化成一定的格式。

datetime2,datetime3,datetime4的效果一样,都是调用了模板datetime.html,并输出显示,但写法一个比一个简洁。

其中,datetime2中的get_template()方法,会自动从settings中指定的路径寻找并加载模板文件,render()方法用于将变量赋值给模板中的变量,Context则是把模板中的变量名和python代码中的变量进行了对应;datetime3中的render_to_response()方法,一步完成了模板的加载和渲染;datetime4中的locals()方法自动将current_date等变量的变量名和值进行一一对应,而免去了用Context去写的麻烦(要求python和模板中的变量名一致)。

hours_ahead方法则从url接收一个参数offset,并根据这个参数响应请求。int方法将offset从字符串转换为整型值,如果转换失败会抛出异常,则响应404页面。关于url参数的传入,将在下一步设置url路由的代码中看到。

设置URL路由

在WebServer/urls.py中的urlpatterns中添加如下代码,利用正则表达式设置URL路由。

其中第一行的admin是自动生成的admin界面的路由;字符串前面的r在Python中表示原始字符串,也就不会对反斜杠“\”进行转义字符处理;正则表达式中的^和$分别匹配字符串的起始和结尾;(\d{1,2})中的d{1,2}用于匹配1~2位数字,小括号用于从url中获取参数,传入到相应的方法进行处理。

注意,使用其他文件中的变量,需要用import语句进行导入。在Python中,函数也可以当做变量使用,另外直接用文件夹名作为命名空间。urlpatterns中的每个元素都要以逗号结尾,注意缩进。

响应用户请求的流程

打开工程目录下的manage.py文件,可以看到

在这个文件中指定了settings文件,也就是整个网站的配置文件。

在访问页面时,首先找到settings,读取配置。根据ROOT_URLCONF的值,输入的url会通过WebServer/urls.py中的设置进行路由,于是views中相应的方法就会被调用,从而响应请求。

实际测试

在工程目录下,执行命令manage.py runserver 0.0.0.0:8000,启动服务器。在浏览器中输入以下网址,即可看到相应的页面如图。

time2,time3,time4的显示结果相同,如下

如果输入的url中的offset参数是test,而不是数字,则会返回404页面。因为这个url不能匹配URL路由设置中的任何一条路由。

至此,第一版的Django项目就介绍完了,提供源代码下载。

可在github下载源码:https://github.com/jzj1993/Django-Quick-Start/