实战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 models class 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: polls Synchronizing 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:53 Django version 1.7.1, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
这就表示服务器已经成功启动了.
注:runserver是非常重要的命令,但不需要刻意去记,在做实例的过程中,这可能会是你记得最牢的一个命令。
好,打开浏览器,在地址栏内输入:
http://127.0.0.1:8000/admin/
你会看到如下的页面:
这是使用Django的一大福利,Django自带强大的管理后台。现在,就用你刚才建好的管理员账号登录吧!
登录后的页面会是这个样子:
是不是除了用户和用户组管理,我们现在啥也做不了?不要着急,舍得会在下一部分教你如何往里面一点点添加内容。
【未完待续】