您的位置:首页 > 编程语言 > Go语言

Django 文档自翻自用中文版(2.1-2.1.3)

2016-04-29 01:56 417 查看
第一章的内容没什么特别重要不做翻译,从2.1开始不定时翻译,翻译内容也不定,因为自己一边学一边翻译.

2.1 Django 的大致浏览

因为django在一个快节奏的环境下开发,它用来使一般的web开发变得快速而简单.这是一个关于如何用django创建一个基于数据库的web app的概述.


2.1.1 设计你的模型

尽管你可以在没有数据库的情况下使用django,在你的python代码里描述数据库框架时会带上其对象关系映射.

数据模型语法(data-model synax)提供了丰富的方式来展示你的模型,迄今为止,它已经解决了许多年的数据库模式问题.这里有一个简单的例子:

mysite/news/models.py


from django.db import models

class Reporter(models.Model):
full_name = models.CharField(max_length=70)
def __str__(self): # __unicode__ on Python 2
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, on_delete=models.CASCADE)
def __str__(self): # __unicode__ on Python 2
return self.headline


2.1.2 安装

然后, 运行django命令行来自动生成数据库表:
$ python manage.py migrate
migrate命令查找你所有可查看的模型,然后对于数据库中不存在的表单自动创建,同样也作为可选的,提供了更丰富的语法控制


2.1.3 享受自由的API

通过上面的命令,从你的数据中可以获得一个自由的丰富的python api, api是在命令运行中生成的,不需要专门代码生成:


# 导入 news app中创建的模型
>>> from news.models import Reporter, Article
# 系统中还没有reporters.
>>> Reporter.objects.all() [] # Create a new Reporter.
>>> r = Reporter(full_name='John Smith')
# 将对象保存在数据库里,需要调用save()方法
>>> r.save() # 现在生成了一个id.
>>> r.id 1 # 现在一个新的reporter存在数据库里.
>>> Reporter.objects.all() [] # 在python对象中,对象作为属性展示出来
>>> r.full_name 'John Smith' # Django提供一个丰富的数据库来查寻API(?)
>>> Reporter.objects.get(id=1)
>>> Reporter.objects.get(full_name__startswith='John')
>>> Reporter.objects.get(full_name__contains='mith')
>>> Reporter.objects.get(id=2)
Traceback (most recent call last):
...
DoesNotExist: Reporter matching query does not exist.
# 创建一个article.
>>> from datetime import date
>>> a = Article(pub_date=date.today(), headline='Django is cool', ... content='Yeah.', reporter=r)
>>> a.save()

# 现在数据库里有了一个article
>>> Article.objects.all() [] # Article对象获得了API权限来关联一个reporter对象
>>> r = a.reporter
>>> r.full_name 'John Smith' # And vice versa: Reporter 对象获得了API权限来关联一个Article对象.
>>> r.article_set.all() []
# API遵循你需要的关系,并且能够高效执行
# JOINs for you behind the scenes.(在后台添加关联的意思?)
# 这条命另查找'John'开头的reporter的所有articles.
>>>Article.objects.filter(reporter__full_name__startswith='John') []
# 改变一个对象通过改变其属性并且调用save方法
>>> r.full_name = 'Billy Goat'
>>> r.save() # delete()方法删除一个对象
>>> r.delete()


原文档请参照Django1.9.1 Documentation
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: