python27+django1.9添加api
我们进入Python的交互 shell 并使用Django提供的API。要进入Python shell,使用python manage.py shell
- 把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的更多相关文章
- asp.net core系列 57 IS4 使用混合流(OIDC+OAuth2.0)添加API访问
一.概述 在上篇中,探讨了交互式用户身份验证,使用的是OIDC协议. 在之前篇中对API访问使用的是OAuth2.0协议.这篇把这两个部分放在一起,OpenID Connect和OAuth 2.0组合 ...
- .net 添加api不能访问的问题
在一个.netmvc项目中,本身没有提供api后来想添加api就会出现问题.会发生添加的apicontrol不能访问的情况.这种情况一般是因为,global文件中,application_start( ...
- IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问
IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问 原文:http://docs.identityserver.io/en/release/quickst ...
- IdentityServer4【QuickStart】之切换到混合流并且添加API访问
切换到混合流并且添加API访问 前面的示例中我们开发了API访问和用户认证,现在我们要将两个合并到一起. OpenID Connect&OAuth 2.0组合的美妙之处是,你可以使用单一协议和 ...
- ABP 适用性改造 - 添加 API 版本化支持
Overview 在前面的文章里有针对 abp 的项目模板进行简化,构建了一个精简的项目模板,在使用过程中,因为我们暴露的 api 需要包含版本信息,我们采取的方式是将 api 的版本号包含在资源的 ...
- 如何在Web项目中给没有添加API核心组件添加APIController的帮助页HelpPage
前言: ASP.NET中的Web项目可以通过APIController控制器来为其他项目提供接口. 而我们在调试这些接口时,可以选择单元测试,网页测试(Get接口),自己写测试代码或者第三方测试工具 ...
- IdentityServer(11)- 使用Hybrid Flow并添加API访问控制
关于Hybrid Flow 和 implicit flow 我在前一篇文章使用OpenID Connect添加用户认证中提到了implicit flow,那么它们是什么呢,它和Hybrid Flow有 ...
- 第13章 切换到混合流并添加API访问 - Identity Server 4 中文文档(v1.0.0)
在之前的快速入门中,我们探讨了API访问和用户身份验证.现在我们想把这两个部分放在一起. OpenID Connect和OAuth 2.0组合的优点在于,您可以使用单个协议和使用令牌服务进行单次交换来 ...
- 如何给框架添加API接口日志
前言 用的公司的框架,是MVC框架,看了下里面的日志基类,是操作日志,对增删改进行记录, 夸张的是一张业务的数据表 需要一张专门的日志表进行记录, 就是说你写个更新,添加的方法都必须写一遍操作日志,代 ...
随机推荐
- WebBrowser控件应用:弹出新窗体和关闭窗口
缘起:上次写了一个<WebBrowser控件的简单应用2>,提到了在NewWindow事件中打开新窗口的例子.有网友“队长 ”提出那个事件得到的参数是本页面的,而不是新页面的,经过测试,果 ...
- linux 命令案例学习——文件搜索
两个搜索文件的工具 locate ——仅仅通过文件名查找文件 find ——依据文件的各种属性在既定目录(包括子目录)里查找 一个通常与文件搜索命令一起使用.处理搜索结果文件列表的命令 xa ...
- stanford-postagger中文词性标注
安装 系统需要安装Java1.6+ http://nlp.stanford.edu/software/tagger.shtml 下载Download full Stanford Tagger vers ...
- ES6入门之set和map
Set ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化. // 例一 var set = ne ...
- java遍历Map时remove删除元素
public class T { /** * @param args */ public static void main(String[] args) { // TODO Auto-generate ...
- The GPG keys listed not correct
The GPG keys listed for the "Extra Packages for Enterprise Linux 5 - x86_64" repository ar ...
- Cookie操作类 实现记住用户名和密码的功能
import java.util.Hashtable;import java.util.Iterator;import java.util.Set;import javax.servlet.http. ...
- 浅谈配置chrome浏览器允许跨域操作的方法
浅谈配置chrome浏览器允许跨域操作的方法 一:(Lying人生感悟.可忽略) 最近有一天,对着镜子,发现满脸疲惫.脸色蜡黄.头发蓬松.眼神空洞,于是痛诉着说生活的不如意,工作没激情,工资不高,一个 ...
- 多态and接口
一.多态 1.什么是多态? 解析:不同的对象对于同一个操作,做出的响应不同 具有表现多种形态的能力的特征 2.使用多态的优点 解析:为了实现统一调用 一个小例子:<父类类型作为参数> 父类 ...
- HDU 1024 (不重叠m段最大和) Max Sum Plus Plus
题解是看的这里的: http://www.acmerblog.com/hdu-1024-Max-Sum-Plus-Plus-1276.html 当前这个状态是dp[i][j],i 表示当前的段,j表示 ...