数据库,里面有各种宝贝,一个没有数据库的网站,提供的功能非常有限
连接数据库
mysql是最常用的数据库,这里将django和mysql连接。
安装:
easy_install MySQL-python 或
pip install MySQL-python
登陆数据库
建库:
CREATE DATABASE villa DEFAULT CHARSET=utf8;
授权:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON villa.* TO 'vamei'@'localhost' IDENTIFIED BY 'vameiisgood';
在setting.py中,更改database对象
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'villa',
'USER': 'vamei',
'PASSWORD': 'vameiisgood',
'HOST': '/tmp/mysql.sock',
'PORT': '3306',
}
}
指定后台类型为mysql,上面包含数据库用户名,密码,django根据这一设置与数据库连接
创建模型
django将关系型的表转化为一个类,而每个记录则是该类下的一个对象。个表为一个类。表的每一列是该类的一个属性。在models.py中,我们创建一个只有一列的表,即只有一个属性的类
[root@112 west]# cat models.py
from django.db import models
class Character23(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
类Character有一个__unicode__()方法,用来说明对象的字符表达方式。如果是Python 3,定义__str__()方法,实现相同的功能.
命令Django同步数据库。Django根据models.py中描述的数据模型,在MySQL中真正的创建各个关系表:
python manage.py syncdb
录入数据
INSERT INTO west_character23 (name) Values ('Vamei');
INSERT INTO west_character23 (name) Values ('Django');
INSERT INTO west_character23 (name) Values ('John');
select * from west_character23;
在west中添加视图
cat views.py
# -*- coding: utf-8 -*-
from django.shortcuts import render
from django.http import HttpResponse
from west.models import Character23
def staff(request):
staff_list = Character23.objects.all()
staff_str = map(str, staff_list)
return HttpResponse("<p>" + ' '.join(staff_str) + "</p>")
从west.models中引入了Character23类。通过操作该类,我们可以读取表格中的记录,
为了让http请求能找到上面的程序,west/urls.py增加url导航增加如下一行:
url(r'^staff/', 'west.views.staff'),