利用 Apache 服务器搭建 Python 网站 (二)

本文介绍如何在Apache服务器上部署Python网站,通过mysite/wsgi.py作为入口处理所有请求,包括静态页面。同时讨论了媒体和文件资源的独立托管、Django视图的应用、界面美化以及网站安全强化措施,利用ajax提升用户体验。在实际操作中可能会面临各种挑战。
摘要由CSDN通过智能技术生成
Django 的使用

这几天都在熟悉 Django 这个框架的使用。总的感受就是非常的方便,功能很强大。在网上查阅对 Django 这个框架的评论的时候,有一条说的是:如果你按照它(Django)的方式来使用它,那么就会相当的方便,但是如果你的使用方式和它有冲突的话,那么就会很难受。因此我会尽量学习和适应它的思考方式。目前来说,主要的学习资料还是它官方网站上的各种文档,目前 Django 最新的稳定版是1.5。

Project & App
感觉应该先说一下 Django 里面的 Project 和 App 的概念。按照我目前的理解 Project 是指整个网站,而一个 App 可以看做是一个相对独立的功能模块。使用 $django-admin.py startproject mysite 来创建一个项目,使用 $manage.py startapp appname 来创建一个 app。

数据库
Django 提供多种数据库的支持。我根据自己的情况选择了 sqlite3,也是 Django 推荐的选择。因为我要建的网站数据量并不是很大,所以 sqlite3 应该足够我使用,而且 sqlite3 现在也算是比较成熟了,以后就算是万一需要迁移数据也不会是很麻烦的事情。需要注意的是如果是用 python3,需要一个插件才能提供对 mysql 的支持,详见此文档

我想任何不是专门做数据库的程序猿都不会喜欢处理数据库相关的东西:数据结构的设计,每个数据类型的确定,数据模型之间的关系,数据模型的更新……至少我本人不喜欢,虽然其实我对数据库的使用是比较熟的。根据教程试用 Django 数据库的相关功能,我和我的小伙伴们都惊呆了:太方便了。

这又要从 Django 的思想说起,Django 的想法是,按照 MVC 的结构来构建网页。你根据说明将 Model 定义好了以后,使用 $manage.py syncdb* 就可以根据你定义的 Model 直接将数据库建好,而使用的时候,也是使用它定义好的一些方法,将各种数据库操作方便的封装起来,这样你面对的就是你的数据模型而不用去管数据库了。我以往还是非常习惯去写各种强大的 sql 语句,因此还是花了些时间才习惯这种方式。当然我也不太确定如果对数据库的操作不熟悉的话,是不是接受这种方式会快一点。不过,不管怎样,要用好这种方式,花点时间学习使用是少不了的,但回报也是很值得的。

*注意:syncdb 这个命令可以帮你生成相应的 table,但如果你修改了数据模型,那么是不能用这个命令来处理的,有两种选择:一是用 flush 命令,这样会清除所有的数据;二是通过其他手段,比如通过专门的数据库工具。

对 URL 的处理
这个说起来简单,但实际使用的时候小问题还是挺多的。根据 Django 的建议,一个网站的大概结构应该是这样的:
  1. 一个入口文件 mysite/wsgi.py,所有的网页请求都会定位到这个入口,静态页面也是通过这个入口,需要稍微配置一下。
  2. 媒体和文件资源放在单独我服务器上,可以是虚拟服务器
根据上面的第一点可以知道,所有 url 请求到了这个入口以后,如何将这些请求区分开来定位到各个功能?这个就在 urls.py 文件里面来进行配置。需要注意的是, url 的匹配主要是用正则表达式,并且配合 Django 对参数的识别的格式:(?P<param_name>match_param)。

总的经验就是:多参考一下 Django 的例子,在配置的时候如果有相应的说明要仔细读,多尝试。

HttpRequest & HttpResponse
做网站还有一点会重要的就是对浏览器提交的数据进行处理,浏览器提交数据主要是 GET,POST 两种方式,而如何取得其中的参数也是很重要的。而 HttpResponse 我们通常不需要太过关心,因为 Django 已经处理了各种常规的情况,但有些时候还是需要我们手动来处理的。具体的使用请参考此文档

Python 命令模式
接下来不得不说的就是 Python 的命令模式了,编程少不了的就是各种想法各种尝试,而 Python 的命令模式让这种尝试变的非常的方便。其他很多语言要想尝试某一种想法,都少不了要专门写的个例子,或至少要改了代码,然后加上适当的 log,然后编译运行,然后分析 log…… Python的命令模式将这种过程大大的简化了,用起来非常的舒服。配合 Django 的使用,需要使用 $python manage.py shell 来进入命令模式,这样它可以将很多当前网站的配置/路径都处理好,这样你就可以很方便的尝试你的代码。

小结:
目前为止主要其实都是对 Django 框架的学习和使用,总的来说还是比较方便的。虽然会遇到还多小问题,但查查文档,仔细想想都还是能够处理的。随着学习的深入,要做的事情也越来越多,目前我主要是实现功能,功能实现以后,还需要做的事:
  • Django view 的使用
  • 美化界面
  • 强化网站的安全,虽然我要做的网站对安全要求不高,但也不能太烂
  • 在适当的地方使用 ajax 提升用户体验
  • 在整个过程中肯定还会遇到其他不少的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值