日期:2014-05-17  浏览次数:20921 次

windows下创建你的第一个Django应用

??? 本来哥们一直用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文件夹下生成以下四个分工不同的文件。

  • __init__.py
    文件__init__.py可以向Python编译器表明当前文件夹下的内容是Python工程模块。
  • 2.manage.py
    manage.py是Python脚本文件,与Django的命令行工具django-admin.py配合,可以对建立的工程进行管理配置。
  • settings.py
    这是Django工程的配置文件,与工程相关的工程模块和数据库全局配置信息都在settings.py中设置。
  • urls.py
    文件urls.py负责配置URL的地址映射以及管理URL的地址格式。

三。看看效果

?

键入命令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