失效链接处理 |
Django 中文文档 1.8 PDF 下载
本站整理下载:
提取码:7fh8
相关截图:
主要内容:
Django 初探 由于Django是在一个快节奏的新闻编辑室环境下开发出来的,因此它被设计成让普 通的网站开发工作简单而快 捷。以下简单介绍了如何用 Django 编写一个数据库驱 动的Web应用程序。 本文档的目标是给你描述足够的技术细节能让你理解Django是如何工作的,但是它 并不表示是一个新手指南或参考目录 – 其实这些我们都有! 当你准备新建一个项 目,你可以 从新手指南开始 或者 深入阅读详细的文档. 设计你的模型(model) 尽管你在 Django 中可以不使用数据库,但是它提供了一个完善的可以用 Python 代 码描述你的数据库结构的对象关联映射(ORM)。 数据模型语法 提供了许多丰富的方法来展现你的模型 – 到目前为止,它已经解决了 两个多年积累下来数据库架构问题。下面是个简单的例子,可能被保存为 mysite/news/models.py: class Reporter(models.Model): full_name = models.CharField(max_length=70) def __unicode__(self): return self.full_name class Article(models.Model): pub_date = models.DateField() headline = models.CharField(max_length=200) content = models.TextField() reporter = models.ForeignKey(Reporter) def __unicode__(self): return self.headline 安装它 下一步,运行 Django 命令行工具来自动创建数据库表: manage.py syncdb syncdb 命令会查找你所有可用的模型(models)然后在你的数据库中创建还不存在的 数据库表。 9
概览享用便捷的 API 接着,你就可以使用一个便捷且功能丰富的 Python API 来访问你的数据。API 是 动态生成的,不需要代码生成: # 导入我们在 "news "应用中创建的模型。 >>> from news.models import Reporter, Article # 在系统中还没有 reporters 。 >>> Reporter.objects.all() []# 创建一个新的 Reporter 。 >>> r = Reporter(full_name='John Smith') # 将对象保存到数据库。你需要显示的调用 save() 方法。 >>> r.save() # 现在它拥有了一个ID。 >>> r.id 1# 现在新的 reporter 已经存在数据库里了。 >>> Reporter.objects.all() [<Reporter: John Smith>] # 字段被表示为一个 Python 对象的属性。 >>> r.full_name 'John Smith' # Django 提供了丰富的数据库查询 API。 >>> Reporter.objects.get(id=1) <Reporter: John Smith> >>> Reporter.objects.get(full_name__startswith='John') <Reporter: John Smith> >>> Reporter.objects.get(full_name__contains='mith') <Reporter: John Smith> >>> Reporter.objects.get(id=2) Traceback (most recent call last): ... DoesNotExist: Reporter matching query does not exist. Lookup par ameters were {'id': 2} # 创建一个 article. >>> from datetime import date >>> a = Article(pub_date=date.today(), headline='Django is cool' ,... content='Yeah.', reporter=r) >>> a.save() # 现在 article 已经存在数据库里了。 10
概览>>> Article.objects.all() [<Article: Django is cool>] # Article 对象有 API 可以访问到关联到 Reporter 对象。 >>> r = a.reporter >>> r.full_name 'John Smith' # 反之亦然:Reporter 对象也有访问 Article 对象的API。 >>> r.article_set.all() [<Article: Django is cool>] # API 会在幕后高效的关联表来满足你的关联查询的需求。 # 以下例子是找出名字开头为 "John" 的 reporter 的所有 articles 。 >>> Article.objects.filter(reporter__full_name__startswith="John ")[<Article: Django is cool>] # 通过更改一个对象的属性值,然后再调用 save() 方法来改变它。 >>> r.full_name = 'Billy Goat' >>> r.save() # 调用 delete() 方法来删除一个对象。 >>> r.delete()
|