【写在前面】

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

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

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

【未完待续】

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

  1. 实战Django:官方实例Part2

    我们接着Part1部分往下讲.我们在part1中启动服务器后,并没有在管理页面中发现新添加的Polls应用,怎么办捏? 7.在管理界面中显示Question 只要注册一下这个应用就可以了.编辑poll ...

  2. 实战Django:简易博客Part1

    舍得学习新技能的时候,通常不喜欢傻读书--捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念.知识点,头是越来越大,但技能却几乎没掌握半分. 多年来,舍得养成了用做实例来学习新技能 ...

  3. 实战Django:官方实例Part6

    我们终于迎来了官方实例的最后一个Part.在这一节中,舍得要向大家介绍Django的静态文件管理. 现在,我们要往这个投票应用里面添加一个CSS样式表和一张图片. 一个完整的网页文件,除了html文档 ...

  4. 微软官方实例 RazorPagesMovie 在 asp.net core 2.1 版本下的实战

    微软官方实例 RazorPagesMovie 在 asp.net core 2.1 版本下的实战 友情提示: 操作系统: MacOS 10.13.5 dotnet core: version 2.1. ...

  5. 对《[Unity官方实例教程 秘密行动] Unity官方教程《秘密行动》(十二) 角色移动》的一些笔记和个人补充,解决角色在地形上移动时穿透问题。

    这里素材全是网上找的. 教程看这里: [Unity官方实例教程 秘密行动] Unity官方教程<秘密行动>(九) 角色初始设定 一.模型设置: 1.首先设置模型的动作无限循环. 不设置的话 ...

  6. Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)

    相关资料:1.http://blog.csdn.net/laorenshen/article/details/411498032.http://www.cnblogs.com/findumars/p/ ...

  7. 微信应用号开发知识贮备之altjs官方实例初探

    天地会珠海分舵注:随着微信应用号的呼之欲出,相信新一轮的APP变革即将发生.从获得微信应用号邀请的业内人士发出来的一张开发工具源码截图可以看到,reacjs及其相应的FLUX框架altjs很有可能会成 ...

  8. 源于《Unity官方实例教程 “Space Shooter”》思路分析及相应扩展

    教程来源于:Unity官方实例教程 Space Shooter(一)-(五)       http://www.jianshu.com/p/8cc3a2109d3b 一.经验总结 教程中步骤清晰,并且 ...

  9. 超具体Windows版本号编译执行React Native官方实例UIExplorer项目(多图慎入)

    ),React Native技术交流4群(458982758).请不要反复加群! 欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客右側欢迎微信扫描关注订阅号,移动技术干货,精彩文 ...

随机推荐

  1. Ubuntu - Grub2.0修改默认启动项

    1. 我的环境: Ubuntu 10.04   2. 关键位置和文件: /boot/grub/grub.cfg 文件: /etc/grub.d/ 目录: /etc/default/grub 文件:   ...

  2. Bug管理工具的使用介绍(Bugger 2016)

    1. Bugger 2016 介绍 Bugger 2016 is the version of Bugger adding support fot Team Foundation Server bug ...

  3. python写入中文到文件乱码的问题

    file = open(filename,'a',encoding='utf8')#指定写入编码为utf8,否则写入中文会乱码

  4. 刻意练习,逃离舒适区——怎么样成为一个高手[罗辑思维]No.183_知识笔记

    2016/10/30 14:31:32   一.对事物的见解分为两类:         1.评论性的见解               说的内容都是对的,符合常理的,但是却是不解决问题的.       ...

  5. Orchard官方文档翻译(一) 总览

    原文地址:http://docs.orchardproject.net/ 最近想要学习了解orchard,但却没有找到相关的中文文档,只有英文文档.于是决定自行翻译,以便日后方便翻阅. 转载请注明原作 ...

  6. PMP-产品范围与项目范围区别

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 1.产品范围--某项产品.服务或成果所具有的特性和功能. 2.项目范围--为交付具有 ...

  7. apache中若干模块的安装

    第一次手动安装apache,由于在./configure -prefix=/usr/local/apache2 -enable-module=so这样配置,导致后来不得不手动安装一些模块,遇到了一些坑 ...

  8. 关键字 base 的作用

    ①调用基类上已被其他方法重写的方法,小栗子a如下: public class Father { public virtual void Show() { Console.WriteLine(" ...

  9. MFC读取XML文件并解析

    现在经常会对XML文件进行操作,怎么在MFC下去读和解析XML文件呢?直接上代码: 首先得等在stdafx.h中加入这句,以引入MSXML命名空间 #import <msxml3.dll> ...

  10. golang初体验

    使用golang开发已经有一个多月了,除了一开始遇到的各种小白问题,IDE的选择,gopath,goroot的配置...后边还算顺风顺水的.实践体验,golang真的适合快速开发.特别是后台开发,直接 ...