实战Django:Rango Part1
在前面我们已经陆续学习了六个Django的实例,其中一个来自Django官方的文档,另外五个来自《Django Web开发指南》。舍得介绍的每一个实例,都是按照官方文档的标准,力求让大家在根据文章去做自己的实例时,能够按“文”索骥,轻松再现整个实例的制作过程。
接下来,舍得要介绍一个大型的实例,这个项目叫做Rango,它来自Django圈内口碑甚佳的《How to Tango with Django》一书。事实上,此书就是围绕Rango这一个实例来展开的,而且,作者在介绍实例的时候,尽可能按照官方实例的标准来介绍整个制作过程,对学习者帮助甚大。这个实例已被收入到官方的实例库中(见https://code.djangoproject.com/wiki/Tutorials)。
《How to Tango with Django》并没有正式出版,而是以在线文档的方式来分享,大家可以从这里阅读到这本书的内容:http://www.tangowithdjango.com/book/(这是适用于Django 1.5.4版的,Django 1.7版的可以看这里:http://www.tangowithdjango.com/book17/)。
由于市面上并无该书的PDF或Epub格式下载,舍得从作者的网站上抓取了html文件,重新整理了版面,将其制作成epub的格式电子书,解决因受网速影响而导致阅读不畅的问题。有兴趣的童鞋可以从这里下载:舍得学苑下载中心(此链接为1.7版电子书,据了解,该版本目前尚未正式完成,即仍处于草稿状态,介意的童鞋可下载1.5.4版)
《How to Tango with Django》中的实例显然要比舍得之前分享的六个实例要大得多,但是,不要被它的“大”吓到,它仍然只是一个适合初学者入门的实例。童鞋们可以通过这个实例,复习之前学过的内容,此外,还可以学到一些新的技巧,比如用户登录,Bootstrap,以及更实用的Ajax应用等等。
注意,本实例所用的Django版本为1.7.1,Python版本为3.2,操作系统为Win8。
1.创建项目和应用
我们先来创建本实例的项目,在dos命令提示符下转到Scripts文件夹(如“c:\python32\Scripts”),然后运行如下命令:
$ django-admin startproject rangoproject
然后在dos命令提示符下继续输入如下命令,进入项目文件夹:
cd rangoproject
接下来开始创建应用,在dos命令提示符下输入命令:
$ python manage.py startapp rango
命令执行完后,项目根文件夹下会出现一个叫rango的文件夹,应用创建完毕。
关于项目根文件夹:
当你创建好项目时,你会发现其文件夹的结构会是下面这样:
rangoproject/ manage.py rangoproject/ __init__.py settings.py urls.py wsgi.py
这里有两个rangoproject文件夹,我们把上面一个叫做项目根文件夹,下面一个(和manage.py并列的)叫做项目配置文件夹。
2.建立模型
编辑rango/models.py文件,改成下面这样:
rango/models.py:
from django.db import models class Category(models.Model): name = models.CharField(max_length=128, unique=True) def __str__(self): return self.name class Page(models.Model): category = models.ForeignKey(Category) title = models.CharField(max_length=128) url = models.URLField() views = models.IntegerField(default=0) def __str__(self): return self.title
首先修改rangoproject/settings.py这个文件,找到INSTALLED_APPS这段设置,把它改成下面这个样子:
rangoproject/settings.py:
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rango', )
编辑settings.py的时候,建议顺便修改一下语言和时区的设置,具体的方法请参考:《实战Django:官方实例Part1》
然后在dos命令提示符下运行如下命令:
$ python manage.py makemigrations rango
继续在dos命令提示符下运行命令:
$ python manage.py migrate
这样,数据库就建好了。我们在实例中(包括之前的六个实例)使用的是Django默认的Sqlite3数据库,数据库文件为db.sqlite3,存放在项目根文件夹下,这同样是默认的设置,你可以在settings.py的DATABASES设置中看到。
4.创建管理员账号在dos命令提示符下运行如下命令:
$ python manage.py createsuperuser
然后依次输入admin,你的邮箱,输入两次密码,完成创建管理员的操作。
5.在管理界面注册应用编辑rango/admin.py 文件,让它变成下面这个样子:
rango/admin.py:
from django.contrib import admin from rango.models import Category, Page class PageAdmin(admin.ModelAdmin): list_display = ('title', 'category', 'url') admin.site.register(Category) admin.site.register(Page, PageAdmin)
6.启动服务器
在dos命令提示符下运行如下命令:
$ python manage.py runserver
http://127.0.0.1:8000/admin/
然后输入你刚才创建的管理员账号和密码,登录管理界面,你可以先尝试添加一些东西,或者,什么都不做。
7.模板和静态文件配置编辑rangoproject/settings.py这个文件,在文件末加入以下内容:
rangoproject/settings.py:
STATIC_PATH = os.path.join(BASE_DIR, 'static') STATICFILES_DIRS = ( STATIC_PATH, ) TEMPLATE_PATH = os.path.join(BASE_DIR, 'templates') TEMPLATE_DIRS = ( TEMPLATE_PATH, ) MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
其中,STATIC_PATH主要用来存放CSS、JS及图片文件,TEMPLATE_PATH用来存放模板文件(项目中所有的模板文件都放在这里,便于管理),MEDIA_ROOT则是用来存放用户上传的图片之类文件。
下面,我们一一创建上面讲到的文件夹,在项目根文件夹下:
- 创建static文件夹
- 创建templates文件夹
- 创建media文件夹
然后在static文件夹下:
- 创建img文件夹
- 创建js文件夹
- 创建css文件夹
我们来测试一下静态文件的配置,找一张jpg格式的文件,将其命名为rango.jpg(或直接下载这张图片:http://www.tangowithdjango.com/static/rango.jpg),把它放到static/img文件夹下,它的正确路径应该是:
rangoproject/static/img/rango.jpg
在浏览器地址栏内输入:
如果你能看到图片,说明静态文件配置成功了.
8.练习1.更新“Category”模型,加入以下两个属性:views和likes,默认值均为0。
2.更新数据库。
3.学习“官方实例Part2”,如果你之前还没看过的话。
提示:
- views和likes的字段类型均为“IntegerField”。
- 更新数据库用makemigrations和migrate命令。
【未完待续】
本文版权归舍得学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:舍得
首发:舍得学苑@博客园