从零开始搭建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