钉子の次元

Dimpurr – 千里之行,始於足下。

Django 学习手记 一 安装和配置

Django 是一款知名的 Python Web 框架,最初为 CMS 设计,现在已经发展成为了一个能快速根据抽象数据模型生成和维护数据库、后台、和模版系统,同时自带用户系统、地址重写等大量实用功能的大型框架。

本文为个人在 Django 学习中的一些心得体会,主要是官方教程和参考文档的一些整理和归纳,并非完全依照原教程翻译而来,因此如有错误,请不吝赐教。

由于本文力求语言精简、参考方便,因此很多较为基础的内容,并没有特别详细的进行解释。不过在容易混淆的部分,大部分都提供了有对应的详细解释说明的「参见」链接,应当注意。

参考资料

安装 Django

首先,安装 Python 的包管理器 pip 。首先尝试使用 Python 自带的 easy_install 模块安装:

easy_install pip

如果成功就没问题了。如果无法使用 easy_install ,使用以下方式安装:

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

完成之后,编辑配置文件,如果没有可以新建一个,换用豆瓣源加速下载: ~/.pip/pip.conf

[global]
index-url = http://pypi.douban.com/simple/

现在可以使用 PiP 安装 Django 了。安装成功后,查看 Django 版本号。

sudo pip install django
python -c "import django; print(django.get_version())"

开始项目

在打算存放项目文件的位置使用一下命令, testsite 是站点的名字。随后, Django 会自动创建一个同名文件夹和一些必要文件。出于权限控制合安全考虑,不建议存放在类似 /var/www 的网站目录下,实际上, Django 项目可以运行在任何位置。

django-admin.py startproject testsite

编辑文件夹内的 settings.py ,修改语言和时区设置。

LANGUAGE_CODE = 'zh-cn'
TIME_ZONE = 'Asia/Shanghai'

然后进行数据库设置。

默认的设置是 Python 自带的 SQLite3 ,简单易用、单文件存储,你可以修改 'NAME': os.path.join(BASE_DIR, 'db.sqlite3') 后面的 db.sqlite3 为自己想要的相对项目根目录的路径和数据库文件名。下面是一份其他数据库的示例。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': ‘数据库名’,
        'USER': ‘数据库用户’,
        'PASSWORD': ‘数据库密码’,
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

如果想使用其他的数据库,可以尝试把 'ENGINE' 的值改为以下 Django 自带支持的数据库包。如果打算使用的数据库不包含在下列列表中,可以尝试直接填写该数据 Python 包的全名。详见

  • django.db.backends.postgresql_psycopg2
  • django.db.backends.mysql
  • django.db.backends.sqlite3
  • django.db.backends.oracle

如果你使用的是 SQLite3 以外的数据库,运行 ./manage.py shell 进入 Django 环境的测试用交互式 Shell ,使用以下命令进行测试连接。如果没有报错信息说明链接成功。

>>> from django.db import connection
>>> cursor = connection.cursor()

配置完成后,执行 ./manage.py migrate ,首次创建项目数据库。我们姑且将这个命令称为「迁移」。在较老版本的教程中这一步会执行 syncdb ,实际上 migrate 这个命令原本来自一个叫 South 的插件,在 Django 1.7 以上变为自带,拥有比 syncdb 更高级的数据库同步和版本控制特性。

创建完成后,执行 ./manage.py runserver 127.0.0.1:8888 ,最后的地址和端口可以自行修改或省略,就可以成功运行 Django 的测试服务器了。

  1. xloger说道:

    怎么感觉跟用Linux一样Orz……

    1. Dimpurr说道:

      Python 可以用包管理的方式安装框架和组件,所以安装部分本来都是在命令行执行。说起来这部分我没考虑 Windows 用户 ……

      1. 星光说道:

        windows也可以配置pip,但是考慮後續會各種踩坑+不方便,個人覺得教程沒有windows下的配置某種程度上也無可非議

  2. Zhiqing说道:

    求windows