实战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
3.激活模型

首先修改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命令。

 

【未完待续】

本文版权归舍得学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:舍得
首发:舍得学苑@博客园

 

posted on 2014-12-14 19:22  舍得学苑  阅读(870)  评论(0编辑  收藏  举报

导航