首页 > 代码库 > 实战Django:官方实例Part1

实战Django:官方实例Part1

【写在前面】

撰写这个实战系列的Django文章,是很久之前就有的想法,问题是手头实例太少,一旦开讲,恐有“无米下锅”之忧。

随着对Django学习的深入,渐渐有了些心得,把这些心得整理出来,以规范的、方便新人上手的撰写方式来写这个实战系列,相信对刚接触Django的童鞋会有一定的帮助。

舍得这里所用到的版本,为Django 1.7.1,Python 3.2,想要按照舍得讲解的实例上手练习的话,请务必与舍得所用的版本保持一致。

实例是在Windows系统下调试的,如果你采用的是非Windows系统,因操作系统不同所产生的差异,请自行设法调整。

【Django与Python的安装】

关于Django与Python的安装,请阅读官方文档。

IDE推荐使用ERIC5.

【关于本实例】

此处的实例出自官方1.7.1版的文档,应该是官方文档中唯一完整的实例。舍得在整理这个实例的时候,并未按官方文档中的顺序逐一讲解,而是按照建站的逻辑一步步写下来,省略了其中个别的步骤与操作,比如”Playing with the API“,是讲在shell界面耍数据库的,感兴趣的童鞋可以自行查阅官方文档。

原实例共分6个part,舍得在讲解的时候,会打乱原来的part结构,只是按照自己的逻辑来讲解。比如本文”Part1“,实际上已经介绍了官方文档”Part2“的部分内容了。对舍得这种处理方法介意的童鞋,可以直接跳过本文去阅读官方文档。

1.创建项目


Django 1.7.1版本安装好后,我们可在Python的Scripts下找到"django-admin.exe"这个程序,创建新项目时,请在dos命令提示符下转到Scripts文件夹(如“c:\python32\Scripts”),然后运行如下命令:

$ django-admin startproject mysite

注: $代表Dos提示符,不必输入(下同)。

上面的命令执行完后,会在Scripts文件夹下多出一个叫mysite的文件夹,其结构为:

mysite/    manage.py    mysite/        __init__.py        settings.py        urls.py        wsgi.py

这些文档中,我们以后要频繁用到的是settings.py和urls.py这两个文档。每个文档各自代表的意思,可参阅官方文档。舍得的观点是,不用去管那么多,跟着这套“实战Django”系列的教程一个个实例做下去,你自然而然会知道每个文档的用途。

 

2.创建应用


关于项目与应用的区别,舍得简单讲下自己的理解。项目好比一个网站,应用只是网站的一部分,它是用来完成特定的某些功能的,比如一个网站可以分为“博客”、“论坛”、“文库”等应用。

我们现在要来建立一个投票的应用,具体操作如下:

在dos命令提示符下执行:

cd mysite

进入我们刚才建好的mysite文件夹,然后运行如下命令:

$ python manage.py startapp polls

注意,python的安装路径应该被添加到操作系统的环境变量中,如果上述命令无法运行,可以使用相对的路径,命令可调整为“..\..\python manage.py startapp polls”,以下不再讨论此问题,请尽早将python加入系统环境变量。

上面的命令执行完后,mysite的文件夹下会多出一个叫polls的文件夹,其结构为:

polls/    __init__.py    admin.py    migrations/        __init__.py    models.py    tests.py    views.py

3.建立模型


模型(models)是我们这个应用的数据源。在Django中,我们要做的是编辑好应用下面的models.py文件:

编辑polls/models.py文件,象下面这样:

polls/models.py:

from django.db import modelsclass Question(models.Model):    question_text = models.CharField(max_length=200)    pub_date = models.DateTimeField(date published)class Choice(models.Model):    question = models.ForeignKey(Question)    choice_text = models.CharField(max_length=200)    votes = models.IntegerField(default=0)

这里的两个class,相当于告诉数据库引擎,待会要给我建这两个表,第一个表叫Question,有两个字段;第二个表叫Choice,有三个字段。实际上在建立数据表的时候,数据库引擎会自动给每个表增加一个递增的ID字段。

4.激活模型


首先要修改mysite/settings.py这个文件,找到INSTALLED_APPS这段设置,把它改成下面这个样子:

mysite/settings.py:

INSTALLED_APPS = (    django.contrib.admin,    django.contrib.auth,    django.contrib.contenttypes,    django.contrib.sessions,    django.contrib.messages,    django.contrib.staticfiles,    polls,)

其实就是告诉程序,我要添加这个polls的应用!

编辑settings.py这个文档的时候,顺便修改一下时区和语言的设置,找到:

LANGUAGE_CODE = en-us

把它改为:

LANGUAGE_CODE = zh-cn

找到:

TIME_ZONE = UTC

把它改为:

TIME_ZONE = CCT

注:CCT为中国北京时间的时区缩写。舍得建议在每一个项目中都进行时区和语言的设置的修改。

 

然后在dos命令提示符下运行如下命令:

$ python manage.py makemigrations polls

你会看到象下面这样的执行结果:

Migrations for polls:  0001_initial.py:    - Create model Question    - Create model Choice    - Add field question to choice

继续在dos命令提示符下运行如下命令:

$ python manage.py migrate

你会看到象下面这样的执行结果:

Operations to perform:  Synchronize unmigrated apps: sessions, admin, messages, auth, staticfiles, contenttypes  Apply all migrations: pollsSynchronizing apps without migrations:  Creating tables...  Installing custom SQL...  Installing indexes...Installed 0 object(s) from 0 fixture(s)Running migrations:  Applying polls.0001_initial... OK

记住makemigrations和migrate这两个命令吧,它是用来创建或修改数据库的,非常重要!

5.创建管理员账号


在dos命令提示符下运行如下命令:

$ python manage.py createsuperuser

输入一个用户名,建议输入:admin:

Username: admin

然后是输入管理员的邮箱,找一个你自己的邮箱输入进去就是:

Email address: xxx@xxx.com

接下来输入两次管理员的密码:

Password: **********Password (again): *********Superuser created successfully.

看到”Superuser created successfully“就大功告成了.

通常每建一个项目都要做这一步”创建管理员账号“的操作,所以请牢记。

 

6.启动服务器


万事俱备,只欠东风,前面我们已经把网站的框架搭起来了,现在就把服务器启动起来,看看效果。

在dos命令提示符下运行如下命令:

$ python manage.py runserver

命令执行后,你会看到类似这样的字符出现:

December 06, 2014 - 00:30:53Django version 1.7.1, using settings mysite.settingsStarting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.

这就表示服务器已经成功启动了.

注:runserver是非常重要的命令,但不需要刻意去记,在做实例的过程中,这可能会是你记得最牢的一个命令。

好,打开浏览器,在地址栏内输入:

http://127.0.0.1:8000/admin/

你会看到如下的页面:

1

这是使用Django的一大福利,Django自带强大的管理后台。现在,就用你刚才建好的管理员账号登录吧!

登录后的页面会是这个样子:

2

是不是除了用户和用户组管理,我们现在啥也做不了?不要着急,舍得会在下一部分教你如何往里面一点点添加内容。

【未完待续】

实战Django:官方实例Part1