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

第一章的内容没什么特别重要不做翻译,从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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值