实战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: [email protected]

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

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自带强大的管理后台。现在,就用你刚才建好的管理员账号登录吧!

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

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

【未完待续】

时间: 2024-12-25 03:31:02

实战Django:官方实例Part1的相关文章

实战Django:官方实例Part2

我们接着Part1部分往下讲.我们在part1中启动服务器后,并没有在管理页面中发现新添加的Polls应用,怎么办捏? 7.在管理界面中显示Question 只要注册一下这个应用就可以了.编辑polls/admin.py 文件,让它变成下面这个样子: polls/admin.py: from django.contrib import admin from polls.models import Question admin.site.register(Question) 这样Django就知道

实战Django:Rango Part1

在前面我们已经陆续学习了六个Django的实例,其中一个来自Django官方的文档,另外五个来自<Django Web开发指南>.舍得介绍的每一个实例,都是按照官方文档的标准,力求让大家在根据文章去做自己的实例时,能够按"文"索骥,轻松再现整个实例的制作过程. 接下来,舍得要介绍一个大型的实例,这个项目叫做Rango,它来自Django圈内口碑甚佳的<How to Tango with Django>一书.事实上,此书就是围绕Rango这一个实例来展开的,而且,

实战Django:网络相册Part1

这个实例与上个实例一样,源自<Django Web开发指南>,舍得根据Django 1.7.1的特性进行了重新编写. <Django Web开发指南>中所用的Django是1.0版,和现在的最新版本相比,有很大差异,比如通用视图.URL.静态文件的处理等等.最初做这本书的实例时,这些变化曾给舍得带来很大的困扰,还好,实例做得多了,慢慢掌握了一些规律,最终把这些实例修改成在Django 1.7.1下可以运行的版本.   1.创建项目和应用 我们先来创建本实例的项目,在dos命令提示符

实战Django:简易博客Part1

舍得学习新技能的时候,通常不喜欢傻读书--捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念.知识点,头是越来越大,但技能却几乎没掌握半分. 多年来,舍得养成了用做实例来学习新技能的习惯.这可不是舍得的独创,在象棋.围棋界中,历来有"打谱"一说,就是根据棋谱,把一步步棋摆出来,在打谱的过程中,去感悟.去吸收,此时感悟到的.吸收进的,才是属于你自己的东西.新的技能就这样一步步发展起来,逐渐壮大. 就象Django官方文档那样,一个实例看起来很简单,但作为初学者,用&q

实战Django:小型CMS Part1

CMS,即Content Management System,内容管理系统.我们这里要开发的小型CMS应用,从结构上和blog应用有些类似,但我们会在这里加入一些新的技术,比如说工作流.搜索功能.编辑组件等. 1.创建项目和应用 我们先来创建本实例的项目,在dos命令提示符下转到Scripts文件夹(如"c:\python32\Scripts"),然后运行如下命令: $ django-admin startproject cmsproject 然后在dos命令提示符下继续输入如下命令,

实战Django:Pastebin

  这是<Django Web开发指南>中的最后一个实例.如果说上一个实例Liveblog重点讲的是Django和Ajax的协作,那么我们在Pastebin中,将学习到Django和高亮语法JS的协作,顺便复习一下在Django中加入表单. 1.创建项目和应用 我们先来创建本实例的项目,在dos命令提示符下转到Scripts文件夹(如"c:\python32\Scripts"),然后运行如下命令: $ django-admin startproject pastebinpr

实战Django:LiveBlog

<Django Web开发指南>的实例讲的差不多了,除了今天要介绍的LiveBlog,还有一个Pastebin.这样,书中的实例基本讲完了.做完这些实例之后,舍得建议回头看看这本书,或许你会从书中找到舍得所讲的实例里忽略掉的一些细节.此外,<Django Web开发指南>中有几个章节是关于Django的基础或高级技术的,建议阅读并设法把它应用到你所练习过的实例中. 正如你已经看到的,Django提供了丰富的内置功能,你可以很轻松地用这些功能来完成很多工作.但和所有的工具一样,Dja

实战Django:Rango Part2

  在这一节,我们将学习如何用自动脚本来添加内容,然后给我们的应用添加首页和一个内容页. 9.Part1练习答案 除了加入views和likes两个字段,这里我们需要思考一个问题,用户将如何来访问我们的页面?用/rango/category/1/ 或 /rango/category/2/?他们怎么知道1代表哪个分类,2又代表哪个分类?有没有更直接一点的方法呢? 我想还是直接用分类名称来作为链接的一部分会比较好一些,比如用/rango/category/Python/来访问Python分类这样子.

实战Django:官方实例Part6

我们终于迎来了官方实例的最后一个Part.在这一节中,舍得要向大家介绍Django的静态文件管理. 现在,我们要往这个投票应用里面添加一个CSS样式表和一张图片. 一个完整的网页文件,除了html文档外,通常还需要其它一些文件,比如图片.JS或者CSS,这些文件,我们称之为"静态文件". 在那些小项目中,我们不需要对静态文件关注太多,因为你可以将这些文件随便放置,只要你的服务器能查找得到就好.但在大一点的项目中,尤其是那些拥有好多个应用的项目,静态文件的管理便变得非常重要,所以骚年,还