从零开始搭建Django开发环境并进行基本操作

记事本&这是给亲人使用的,因此写得相当简略。我认为初学者应该参考其他文章。

版本注意

在这里,我主要使用Python 2.7.10和Django 1.6进行工作。
在使用Python 3和Django 1.9进行工作时,请注意以下几点。

在安装pyenv时选择合适的版本
在安装django时选择合适的版本(默认安装最新1.9版本)

用Django1.6版本,只需编写模型,然后运行$ python manage.py syncdb,数据库就会立即创建出来。
而用1.9版本,则需先编写模型,然后用$ python manage.py makemigrations 应用名 命令生成迁移文件,再用 $ python manage.py migrate 命令从迁移文件创建数据库。

可能的(大概)。

1. 环境建立

安装1-1.pyenv。

从GitHub上安装

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

将~/.pyenv更改为所需的本地目录名,并将pyenv配置写入zshenv、bash_profile等文件中。

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

重新启动Shell以使设置生效,将$HOME适当更改为pyenv的安装位置。

$ exec $SHELL

1-2. 安装Python

通过pyenv安装Python。

$ pyenv install 2.7.10

安装所需的版本。

$ pyenv global 2.7.10
$ pyenv rehash

确认

$ pyenv versions
* 2.7.10 (set by /hoge/.pyenv/version)

1-3. 安装Django并创建测试项目

从pip安装Django1.6。

$ pip install django==1.6

创建测试项目

$ django-admin.py startproject mysite

启动服务器

$ cd mysite
$ python manage.py runserver

请访问 http://localhost:8000 ,以确认服务器是否在运行。

2. Django的测试项目

2-1. 基本的使用方法

Django 1.4 文档 | 创建第一个 Django 应用程序的主要参考

编辑设置文件(setting.py)

修改数据库设置。默认情况下,使用的是sqlite设置,但本次将使用PostgreSQL。

参考网站:DjangoでPostgreSQLを使えるようにした時のメモ | Qiita

假设参照上述网站,安装了PostgreSQL的库等,并创建了新用户和数据库。

setting.py的汇编

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mysite',
        'USER': 'djangouser',
        'PASSWORD': 'pass',
        'HOST': '127.0.0.1',
        'PORT': 5432,
    }
}

创建桌子

通过执行下面的命令,在setting.py文件中指定的INSTALLED_APPS应用程序中创建所使用的表格。

$ python manage.py syncdb

syncdb命令会查找INSTALLED_APPS设置,并根据settings.py中的数据库设置在数据库上创建所需的表。

创建应用

$ python manage.py startapp polls

(polls是一个应用程序的名称)

创建模型

from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()

让项目识别“投票”应用程序。

为了使项目识别出polls应用程序,需要修改设置。在INSTALLED_APPS中添加polls。

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'polls',
)

从已创建的模型中显示SQL

$ python manage.py sql polls
BEGIN;
CREATE TABLE "polls_poll" (
    "id" serial NOT NULL PRIMARY KEY,
    "question" varchar(200) NOT NULL,
    "pub_date" timestamp with time zone NOT NULL
)
;
CREATE TABLE "polls_choice" (
    "id" serial NOT NULL PRIMARY KEY,
    "poll_id" integer NOT NULL REFERENCES "polls_poll" ("id") DEFERRABLE INITIALLY DEFERRED,
    "choice" varchar(200) NOT NULL,
    "votes" integer NOT NULL
);
COMMIT;

从模型中生成SQL语句,并写入数据库。

$ python manage.py syncdb

在Python的交互式Shell中,尝试使用Django的API玩耍。

通过参考《Django 1.4 文档》中的API,尝试创建第一个 Django 应用程序。

打开Python的交互式Shell。

$ python manage.py shell

(参考上述网站,尝试一些有趣的东西)

顺便说一下,我在玩的过程中将polls/models.py修改如下。

import datetime
from django.utils import timezone
from django.db import models

class Poll(models.Model):

    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __unicode__(self):
        return self.question

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


class Choice(models.Model):

    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()

    def __unicode__(self):
        return self.choice

bannerAds