【翻译】How To Tango With Django 1.5.4 第五章
5数据模型和数据库
一个模型就是一个描述你数据表的python对象。不用再通过SQL来操作数据库,而是使用python对象来操作数据库。
5.1rango要求
。。。一个目录下面有多个下面
。。。一个目录有名字,访问量和喜爱量
。。。一个页面有题目,URL和一定数量的视图
5.2告诉django你的数据库
在settings.py里面进行配置,添加如下代码:
DATABASE_PATH = os.path.join(PROJECT_PATH,'rango.db')
DATABASES = {
'default':{
'ENGINE':'django.db.backends.sqlite3',
'NAME':DATABASE_PATH,
}
}
5.3创建数据模型
在rango/models里面定义两个类。都要继承自django.db.models.Model.这两个类代表目录和页面,代码如下:
class Catetory(models.Model):
name = models.CharField(max_length=128,unique=True)
def __unicode__(self):
return self.name
class Page(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length=128)
url = models.URLField()
views = models.IntegerField(default)
def __unicode__(self):
return self.title
5.4创建并同步数据库
创建好之后我们需要通过manage.py来同步数据库,执行下面的命令:
python manage.py syncdb
成功会显示如下图

5.5生成SQL
使用命令python manage.py sql rango
5.6django模型和django shell
5.7配置admin接口
django还有一个特点就是提供了后台管理数据库中表,同样也需要在settings.py里面配置
INSTALLED_APPS = (
'django.contrib.auto',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'rango',
)
然后运行python manage.py syncdb
完成以上步骤之后,就会有一个django_admin_log表。然后再配置工程文件夹下面的urls.py文件,文件显示如下:
from django.conf.urls import patterns,include,url
from django.conf import settings
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'rango/',include('rango.url')),
url(r'admin/',include(admin.site.urls)),
)
if settings.DEBUG:
urlpatterns += patterns(
'django.views.static',
(r'media/(?P<path>.*)',
'serve',
{'document_root':settings.MEDIA_ROOT}
),
)
到这里之后,我们需要告诉django的admin应用我们新建的数据模型。所以我们需要在rango下面新建一个admin.py问价。然后添加下面的代码
from django.contrib import admin
from rango.models import Catetory,Page
admin.site.register(Category)
admin.site.register(Page)
上面的代码就是给admin接口注册数据模型。再次重启django服务器,访问http://127.0.0.1:8000/admin/,会见到下面的页面,输入你之前创建的用户名和密码
5.8新建一个通用脚本
为了避免每次修改数据模型之后,都要删除数据库,可以工程根目录下面新建下面的文件populate_rango.py,添加如下代码:
import os def populate():
python_cat = add_cat('Python') add_page(cat=python_cat,
title="Official Python Tutorial",
url="http://docs.python.org/2/tutorial/") add_page(cat=python_cat,
title="How to Think like a Computer Scientist",
url="http://www.greenteapress.com/thinkpython/") add_page(cat=python_cat,
title="Learn Python in 10 Minutes",
url="http://www.korokithakis.net/tutorials/python/") django_cat = add_cat("Django") add_page(cat=django_cat,
title="Official Django Tutorial",
url="https://docs.djangoproject.com/en/1.5/intro/tutorial01/") add_page(cat=django_cat,
title="Django Rocks",
url="http://www.djangorocks.com/") add_page(cat=django_cat,
title="How to Tango with Django",
url="http://www.tangowithdjango.com/") frame_cat = add_cat("Other Frameworks") add_page(cat=frame_cat,
title="Bottle",
url="http://bottlepy.org/docs/dev/") add_page(cat=frame_cat,
title="Flask",
url="http://flask.pocoo.org") # Print out what we have added to the user.
for c in Category.objects.all():
for p in Page.objects.filter(category=c):
print "- {0} - {1}".format(str(c), str(p)) def add_page(cat, title, url, views=0):
p = Page.objects.get_or_create(category=cat, title=title, url=url, views=views)[0]
return p def add_cat(name):
c = Category.objects.get_or_create(name=name)[0]
return c # Start execution here!
if __name__ == '__main__':
print "Starting Rango population script..."
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tango_with_django_project.settings')
from rango.models import Category, Page
populate()
然后使用python populate_rango.py命令执行这个文件,得到下面的结果


【翻译】How To Tango With Django 1.5.4 第五章的更多相关文章
- 《Django By Example》第五章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag注:大家好,我是新来的翻译, ...
- 【翻译】How To Tango With Django 1.5.4 第四章
4.模板和静态媒体 这章讲解模板引擎 4.1使用模板 前面我们讲解了view和url 映射,创建出了django 的web页面,现在就要将模板混合进去 好的网站在布局上总是有许多重复的.django提 ...
- 【翻译】How To Tango With Django 1.5.4 第三章
django基础 3.1测试你的配置 测试你的python版本和你的django版本是否兼容 3.2新建django工程 在dos里面进到你事先新建的code文件夹,然后在执行下列命令新建工程 c:\ ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- Tango with Django 1.9 中文——1.概述
译者注:英文书地址https://leanpub.com/tangowithdjango19/,作者为Leif Azzopardi 和 David Maxwell.本文仅为尝试.学习和交流,著作权利归 ...
- 《Django By Example》第六章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:无他,祝大家年会都中奖!) 第六章 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (22) -----第五章 加载实体和导航属性之延迟加载
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第五章 加载实体和导航属性 实体框架提供了非常棒的建模环境,它允许开发人员可视化地使 ...
- 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务
http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth3 ...
- Gradle 1.12用户指南翻译——第四十五章. 应用程序插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
随机推荐
- Python基础11- 函数之自定义函数
自定义函数语法结构:def fun1([x],[y],....): 语句1 语句2 使用def语句来定义函数,在def后依次写出函数名.小括号.参数(可无).冒号,然后缩进写函数体 1.无参函数:de ...
- JavaScript类型转换
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Eclipse: Resource is out of sync with the file system when publishing to tomcat server on Eclipse
Link: http://stackoverflow.com/questions/4343735/avoiding-resource-is-out-of-sync-with-the-filesyste ...
- python 代码片段18
#coding=utf-8 f=open('text.txt','w') f.write('foo\n') f.write('bar\n') f.close() f=open('test.txt',' ...
- Grunt vs Gulp
grunt vs gulp 虽然gulp已经出来很久了,但是一直没有去使用过.得益于最近项目需要,就尝试了一下,以下从几个要点讲一下grunt和gulp使用的区别,侧重讲一下在使用gulp过程中发现的 ...
- ACM 盗梦空间
盗梦空间 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 <盗梦空间>是一部精彩的影片,在这部电影里,Cobb等人可以进入梦境之中,梦境里的时间会比现实中 ...
- HTML5 Geolocation 构建基于地理位置的 Web 应用
HTML5 中的新功能 HTML5 是最新一代的 HTML 规范,是 W3C 与 WHATWG 合作的结果,目前仍外于开发中.自从上一代 HTML4,Web 世界已经发生了巨大的变化,HTML5 的到 ...
- 【noiOJ】p7914(..)
08:不重复地输出数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入n个数,从小到大将它们输出,重复的数只输出一次.保证不同的数不超过500个. 输入 ...
- C#后台如何获取客户端访问系统型号
ASP.NET获取客户端.服务器端基础信息 . 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名:P ...
- window通过mstsc远程连接其它计算机
1.Windows远程连接树莓派 1.1.Win + r 出现下面界面. 1.2.输入mstsc今日下面界面 1.3.出现警告,选“是” 1.4.输入账户密码,点“OK”