我们进入Python的交互 shell 并使用Django提供的API。要进入Python shell,使用python manage.py shell

使用这个而不是简单的输入"python",是因为 manage.py 会帮你创建项目的环境。“创建项目环境”包括两件事:

  • 把polls添加到sys.path里。为了灵活性,Django中的模块通过加点的路径来引用(例如'polls.models')。为了实现这个,polls包必须在sys.path里。
    我们已经遇到过一个这样的例子了:the INSTALLED_APPS设置里的列表就是使用点路径表示法。
  • 设置DJANGO_SETTINGS_MODULE环境变量,为Django指定了你的settings.py文件的路径。

省略manage.py

在shell里面时,可以 探索 下database API,这招可以用来检验刚才的模型是否可以正确调用数据库
>>> from polls.models import Poll, Choice # 导入我们刚写的模型。
# 系统里还没有poll。
>>> Poll.objects.all()
[]
# 创建一个新poll。
>>> import datetime
>>> p = Poll(question="What's up?", pub_date=datetime.datetime.now())
# 把对象保存进数据库里。你需要明确调用save()。
>>> p.save()

from start.models import Start
Start.objects.all()
import datetime
p = Start(question="What's up?", pub_date=datetime.datetime.now())
p.save()

也就是上面这个代码框的内容,依次输入处理即可,无论提示什么,只要数据库里生成表,基本就是成功了

# 现在它有个ID了。注意这里也可能显示1L而不是1,
# 取决于你使用的是什么数据库。不过这没什么打不了,
# 它只是表明数据库更倾向于把整型返回成Python的长整型对象。
>>> p.id
1
# 通过Python属性访问数据库列
>>> p.question
"What's up?"
>>> p.pub_date
datetime.datetime(2007, 7, 15, 12, 00, 53)
# 通过修改属性来修改值,然后调用save()。
>>> p.pub_date = datetime.datetime(2007, 4, 1, 0, 0)
>>> p.save()
# objects.all()显示数据库所有的poll。
>>> Poll.objects.all()
[<Poll: Poll object>]等等。 <Poll: Poll object> 完全不能表现出这个对象的 有用信息 。我们可以编辑poll模型(在文件 polls/models.py 里)添加一个__unicode__() 方法 给 Poll 和 Choice 来解决这个问题:
class Poll(models.Model):
# ...
def __unicode__(self):
return self.question
class Choice(models.Model):
# ...
def __unicode__(self):
return self.choice为你的模型添加__unicode__()方法是很有必要的。不仅是为了让你自己更好理解交互提示,而且因为对象的表现的使用会贯穿于整个Django自动产生的admin。
为什么是__unicode__()而不是__str__()?

如果你熟悉Python的话,你可能会更喜欢在你的类里添加__str__()而不是__unicode__()方法。我们这里使用__unicode__()是因为Django模型默认使用Unicode,所有保存在数据库的数据在返回的时候都会转化成Unicode。

Django模型有一个默认的__str__()方法叫__unicode__(),它会把结果集转化成UTF-8字节字符串。在各个意味着unicode(p)会返回一个Unicode字符串,而str(p)会返回一个普通的UTF-8编码的字符串。

如果你还是觉得莫名其妙的话,记得把__unicode__()方法加进你的模型中就行了,幸运的话,一切都会如你所想工作。

注意这些都是普通的Python方法,让我们添加一个自定义的方法,用作示范:
import datetime
# ...
class Poll(models.Model):
# ...
def was_published_today(self):
return self.pub_date.date() == datetime.date.today()添加 import datetime 会引用Python的 datetime 模块。 保存这些修改然后再次运行 python manage.py shell 新开一个Python交互shell:
>>> from polls.models import Poll, Choice
# 确保我们新加的__unicode__()正常工作。
>>> Poll.objects.all()
[<Poll: What's up?>]
# Django提供了丰富的数据库查找API,
# 这些API完全由关键字参数驱动。
>>> Poll.objects.filter(id=1)
[<Poll: What's up?>]
>>> Poll.objects.filter(question__startswith='What')
[<Poll: What's up?>]
# 获取年份为2007的poll。
>>> Poll.objects.get(pub_date__year=2007)
<Poll: What's up?>
>>> Poll.objects.get(id=2)
Traceback (most recent call last):
...
DoesNotExist: Poll matching query does not exist.
# 通过主键查找是很常用的一种方式,
# 所以Django为这种查找方法提供一个便捷的方式。
# 下面相当于Poll.objects.get(id=1)。
>>> Poll.objects.get(pk=1)
<Poll: What's up?>
# 确认我们的自定义方法正常工作。
>>> p = Poll.objects.get(pk=1)
>>> p.was_published_today()
False
# 给Poll加上几个Choice。
# 调用创建函数创建choice对象,会调用INSERT语句,
# 把choice添加到已存choice的集合里,并返回这个新创建的Choice对象。
# Django会创建一个集合保存外键关联,这个集合可以通过API进行访问。
>>> p = Poll.objects.get(pk=1)
# 显示关联的所有choice —— 目前还没有。
>>> p.choice_set.all()

还剩一些懒得搬运了,请参见http://blog.csdn.net/yelbosh/article/details/7530984

python27+django1.9添加api的更多相关文章

  1. asp.net core系列 57 IS4 使用混合流(OIDC+OAuth2.0)添加API访问

    一.概述 在上篇中,探讨了交互式用户身份验证,使用的是OIDC协议. 在之前篇中对API访问使用的是OAuth2.0协议.这篇把这两个部分放在一起,OpenID Connect和OAuth 2.0组合 ...

  2. .net 添加api不能访问的问题

    在一个.netmvc项目中,本身没有提供api后来想添加api就会出现问题.会发生添加的apicontrol不能访问的情况.这种情况一般是因为,global文件中,application_start( ...

  3. IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问

    IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问 原文:http://docs.identityserver.io/en/release/quickst ...

  4. IdentityServer4【QuickStart】之切换到混合流并且添加API访问

    切换到混合流并且添加API访问 前面的示例中我们开发了API访问和用户认证,现在我们要将两个合并到一起. OpenID Connect&OAuth 2.0组合的美妙之处是,你可以使用单一协议和 ...

  5. ABP 适用性改造 - 添加 API 版本化支持

    Overview 在前面的文章里有针对 abp 的项目模板进行简化,构建了一个精简的项目模板,在使用过程中,因为我们暴露的 api 需要包含版本信息,我们采取的方式是将 api 的版本号包含在资源的 ...

  6. 如何在Web项目中给没有添加API核心组件添加APIController的帮助页HelpPage

    前言: ASP.NET中的Web项目可以通过APIController控制器来为其他项目提供接口.  而我们在调试这些接口时,可以选择单元测试,网页测试(Get接口),自己写测试代码或者第三方测试工具 ...

  7. IdentityServer(11)- 使用Hybrid Flow并添加API访问控制

    关于Hybrid Flow 和 implicit flow 我在前一篇文章使用OpenID Connect添加用户认证中提到了implicit flow,那么它们是什么呢,它和Hybrid Flow有 ...

  8. 第13章 切换到混合流并添加API访问 - Identity Server 4 中文文档(v1.0.0)

    在之前的快速入门中,我们探讨了API访问和用户身份验证.现在我们想把这两个部分放在一起. OpenID Connect和OAuth 2.0组合的优点在于,您可以使用单个协议和使用令牌服务进行单次交换来 ...

  9. 如何给框架添加API接口日志

    前言 用的公司的框架,是MVC框架,看了下里面的日志基类,是操作日志,对增删改进行记录, 夸张的是一张业务的数据表 需要一张专门的日志表进行记录, 就是说你写个更新,添加的方法都必须写一遍操作日志,代 ...

随机推荐

  1. RestEasy简介

    RestEasy简介 RestEasy技术说明 简介 RESTEasy RESTEasy是JBoss的一个开源项目,提供各种框架帮助你构建RESTful Web Services和RESTful Ja ...

  2. Redis的hash操作

    user name lisi age 30 height 175 public class User { private String name; private int age; private i ...

  3. Oracle ->> 随机函数

    SQL SERVER下生成随机数据干得多,可是到了Oracle下我就傻了.没用过Oracle,不知道该怎么办?SQL SERVER下依靠TABLESAMPLE或者CHECKSUM(NEWID())来做 ...

  4. 从WeUI学习到的知识点

    WeUI是微信Web服务开发的UI套件, 目前包含12个模块 (Button, Cell, Toast, Dialog, Progress, Msg, Article, ActionSheet, Ic ...

  5. C语言 将整数写入内存指定的连续字节单元中

    将整数数组写入0x40003000开始的连续10个字节内存单元中,注意unsigned char *指向一个字节,而int *指向1个字(4个字),但是可以把字中存储的整数放入字节单元中,只要不超过表 ...

  6. CMake入门指南-编译教程

    CMake是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目.通过编写CMakeLists.txt,可以控制生成的Makefile, ...

  7. 基于webpivottable做的透视表

    1.绑定数据和配置: var wptConfig=<%= wptConfig%>; webPivotTable.setCsvData(<%=dataFields %>, < ...

  8. 笔记三、apache搭建gitweb【转】

    参考文章:     http://www.latelee.org/using-gnu-linux/ubuntu-apache-gitweb.html     http://blog.csdn.net/ ...

  9. Android内存管理(4)*官方教程 含「高效内存的16条策略」 Managing Your App's Memory

    Managing Your App's Memory In this document How Android Manages Memory Sharing Memory Allocating and ...

  10. 第八篇 EBS实现企业日常业务运管模型的解决方案设计思路

    常业务运管模型企业有大有小,各行各业,千差万别,但,其日常业务运管也有相通之处,以典型的制造企业为例,其日常业务运管模型如下图所示:       (1)企业日常业务运管模型在市场经济条件下,一个生产型 ...