日期:2014-05-17 浏览次数:20952 次
??? 本来哥们一直用PYTHON作为脚本工具来快速开发的,方便与否就不多修饰了,简直就是NB嘛,不过..这几天遇到个问题,就是要把一些内容“展示”出来给非编程人员看,这就让我有点郁闷了,的确总不能让人家登陆服务器然后运行脚本看结果吧,于是乎打算玩玩django,它的作用这里不多说了,本文内容主要是如何建立一个Django应用。
?
??? PS:此篇仅是个开始,估计下一篇应该是如何在apache下运行django吧,具体我现在还不清楚呢,等哥们调研完了再写哈,或者大家有好文章推荐给我最好了。。一起学习一起分享
?
本文主要参考了IBM的基于 Django 框架的敏捷 Web 开发一文:http://www.ibm.com/developerworks/cn/opensource/os-cn-django/index.html、和官方文档:http://docs.djangoproject.com/en/dev/intro/tutorial01/
?
我的python:2.5版本的,django目前最新:1.2.4,环境:windows,db:mysql
?
?
好啦开始说了:
?
一.首先从官方网站下载Django包
?
???? 解压后进入Django目录,在命令行里执行python setup.py install,这样Django就会作为第三方模块被安装在Python的site-packages目录中,然后把Django中bin目录的路径添加到环境变量path里面,这样在命令行里就可以方便的使用Django提供的各种指令。本应用实例将创建实现一个新闻公告牌,用户可以从后台添加新闻分类和条目,然后在前端页面中显示新闻的统计信息。
?
?
二。新建你的APP
?
打开命令提示符,进入到想要创建应用的目录,键入django-admin.py startproject news命令,调用Django的控制台命令新建一个名为news的工程,与此同时Django还在新创建的news文件夹下生成以下四个分工不同的文件。
三。看看效果
?
键入命令manage.py runserver,就可以启动Web服务器来测试新建立的工程,如果启动没有错误,将可以看到下面这样的提示信息:“Development server is running at http://127.0.0.1:8000/” 表示当前工程已经可以通过本机的8000端口访问。在命令行里使用Ctrl+Break或Ctrl+C的组合键可以停止runserver命令启动的Web服务器。当然,Django自带的Web服务器一般只是在开发测试的过程中使用,真正部署使用的时候要用到APACHE了,这里不讲解哈,稍等。。。不同的端口下运行命令:python manage.py runserver 8080
?
?
四。编写Django的应用
?
接下来就可以编写Django的应用模块。键入命令python manage.py startapp article,命令会在当前工程下生成一个名为article的模块,目录下除了标识Python模块的__init__.py文件,还有额外的两个文件models.py和views.py。
在当前的工程中,需要有两个Models模型,分别对应List表和Item表,用来存储新闻的分类和新闻的条目,每个Item项都会有一个外键来标记文章的归属分类。下面打开Django创建的models.py文件,按照文件注释中提示的模块添加位置,编写如下的代码:
?
from django.db import models import datetime class List(models.Model): title = models.CharField(max_length=250, unique=True) def __str__(self): return self.title class Meta: ordering = ['title'] class Admin: pass class Item(models.Model): title = models.CharField(max_length=250) created_date = models.DateTimeField(default=datetime.datetime.now) completed = models.BooleanField(default=False) article_list = models.ForeignKey(List) def __str__(self): return self.title class Meta: ordering = ['-created_date', 'title'] class Admin: pass
?
?
这里需要说明一下:
?
上面这段Python代码定义了存储新闻分类的List数据表,上述模型中的定义会被Django转换成与数据库直接交互的结构化查询语言来建立数据表,即创建一个名为List的表格,表格内的两个字段分别是Django自动生成的整型主键id和最大宽度为250个字符的VARCHAR类型字段title,并且在title字段上定义了唯一性约束,来保证新闻分类不会有完全相同的名称。
在List类文件里还定义了函数__str__(),作用是返回self字符串表示的title字段。而在类Meta中,设置了List表格按照title字母顺序的排序方式。在类Admin的设置中,允许Django针对当前的Models模型自动生成Django超级用户的后台管理入口,关键词pass设定Django将按照默认方式生成后台管理界面。在记录排序的ordering设置中,符号“-”表示按照日期的倒序进行排列,如果文章创建日期相同,则再按照title的字母序正序排列。
到此为止,应用中模型部分需要定义的两个数据表都已经创建完毕,下一步的工作是让Django部署并在数据库中生成已经写好的Models模型。
?
?
五。django模块的部署
?
在Django中,与工程全局相关的设置都需要在配置文件settings.py中添加。笔者使用MySQL作为后台数据库,并且已经在MySQL中创建名为django_news的数据库。则需要在settings.py文件中的相应位置设定DATABASE_ENGINE = "mysql" 以及 DATABASE_NAME = "django_news"。
在使用MyS