基于MVC框架models。views。controller
M(moedels)T(template)V(views)
数据库配置:
支持:PostgreSQL、MYSQL、ORACLE、SQLite.
在setting.py文件中配置: ‘ ‘
DATABASE_ENGINE= ‘ ‘ 数据库引擎
DATABASE_NAME= ‘ ‘ 数据库名
DATABASE_USER= ‘ ‘ 用户名
DATABASE_PASSWORD= ‘ ‘ 密码
DATABASE_HOST = ‘ ‘ 主机
一些常见错误
错误信息 | 解决方法 |
---|---|
You haven’t set the DATABASE_ENGINE setting yet. | 不要以空字符串配置`` DATABASE_ENGINE`` 的值。 表格 5-1 列出可用的值。 |
Environment variable DJANGO_SETTINGS_MODULE is undefined. | 使用`` python manager.py shell`` 命令启动交互解释器,不要以`` python`` 命令直接启动交互解释器。 |
Error loading _____ module: No module named _____. | 未安装合适的数据库适配器 (例如, psycopg 或 MySQLdb )。Django并不自带适配器,所以你得自己下载安装。 |
_____ isn’t an available database backend. | 把DATABASE_ENGINE 配置成前面提到的合法的数据库引擎。 也许是拼写错误? |
database _____ does not exist | 设置`` DATABASE_NAME`` 指向存在的数据库,或者先在数据库客户端中执行合适的`` CREATE DATABASE`` 语句创建数据库。 |
role _____ does not exist | 设置`` DATABASE_USER`` 指向存在的用户,或者先在数据库客户端中执创建用户。 |
could not connect to server | 查看DATABASE_HOST和DATABASE_PORT是否已正确配置,并确认数据库服务器是否已正常运行。 |
创建第一个程序
models.py
from django.db import models class Publisher(models.Model): #Publisher:出版商 name = models.CharField(max_length = 10) address = models.CharField(max_length = 50) city = models.CharField(max_length = 20) state_province = models.CharField(max_length=30) country = models.CharField(max_length=50) website = models.URLField() foreign = models.ForeignkeyField(max_length = 20) #外键约束 data = models.DataField(max_length = 20) #日期型 TimeFileld、DateTimeField flt = models.FloatField(max_length = 20) #数字型 IntegerField、DecimalField
表名 = app名称+小写类名(会把_替换为空格)
python manage.py validate(验证有效性)
python manage.py syncdb (创建数据表)
python manage.py sqlall app名(显示创建表SQL语句)
在每个模型里加入__unicode__()方法
def __unicode__():
return u‘%s %s‘ % (self.name,self.city)
插入更新数据
p = Publisher(name = ‘jay‘, city = ‘CHINA‘, country=‘bj‘)
p.save()
p = Publisher.objects.getname(name=‘joy‘)
p.name = ‘jjj‘
p.save()
查询数据
Publisher.objects.all() #相当于select * 取出全部数据
Publisher.objects.filter(name = ‘joy‘) #相当于 where name="joy"
Publisher.objects.filter(name__container = ‘joy‘) #相当于 name like ‘%joy%‘
Publisher.objects.get(name = ‘joy‘) #获取单个对象。而不是整个列表
Publisher.objects.filter.order_by(name=‘joy‘)
Publisher.objects.order_by(‘name‘)[0] #限制返回数据 [0:2]
数据排序
Publisher.objects.order_by("name") #可以是多个参数,以逗号分隔
Publisher.objects.order_by("-name")#逆向排序
在Publisher类中添加
class Meta:
ording = [‘name‘] 默认排序
删除
p.delete()
Publiser.objects.all().delete()
原文:http://my.oschina.net/u/1860571/blog/492494