【写在前面】

撰写这个实战系列的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. Spring定时任务配置

    可参照http://gong1208.iteye.com/blog/1773177 的详细配置 <!-- 系统定时任务工厂类 --> <bean id="systemDes ...

  2. Redis附加功能之Redis事务

    一.事务 Redis 的事务功能允许用户将多个命令包裹起来,然后一次性地.按顺序地执行被包裹的所有命令.在事务执行的过程中,服务器不会中断事务而改去执行其他命令请求,只有在事务包裹的所有命令都被执行完 ...

  3. OpenStack Nova 制作 Windows 镜像

    OpenStack Nova 制作 Windows 镜像   windows虚拟机ubuntuimage防火墙云计算 本贴转自http://www.vpsee.com 上次 VPSee 给 OpenS ...

  4. Orchard官方文档翻译(七) 导航与菜单

    原文地址:http://docs.orchardproject.net/Documentation/Navigation-and-menus 想要查看文档目录请用力点击这里 最近想要学习了解orcha ...

  5. 慕课网-安卓工程师初养成-3-3 Java中的赋值运算符

    来源:http://www.imooc.com/code/1298 赋值运算符是指为变量或常量指定数值的符号.如可以使用 “=” 将右边的表达式结果赋给左边的操作数. Java 支持的常用赋值运算符, ...

  6. TypeError: validator.settings[("on" + event.type)].call is not a function

    昨天遇到此错误信息,下面是调试后正确的代码: $("#inputForm").validate({//inputForm是对应的表单的id onkeyup:false, onfoc ...

  7. java.lang.IllegalArgumentException

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.Persiste ...

  8. openGL 提升渲染性能 之 顶点数组 VBO IBO VAO

    使用openGL图形库绘制,都需要通过openGL接口向图像显卡提交顶点数据,显卡根据提交的数据绘制出相应的图形. openGL绘制方式有:直接模式,显示列表,顶点数组,顶点索引. 直接模式:最简单, ...

  9. MVC中使用过滤器记录异常日志

    using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Filte ...

  10. PAT1076. Forwards on Weibo(标准bfs模板)

    //标准的层次遍历模板 //居然因为一个j写成了i,debug半天.....解题前一定要把结构和逻辑想清楚,不能着急动手,理解清楚题意,把处理流程理清楚再动手,恍恍惚惚的写出来自己慢慢debug吧 # ...