我是Django REST框架的初学者,需要你的建议.我正在开发一个Web服务.该服务必须为其他服务提供REST接口.我需要实现的REST接口不能直接使用我的模型(我的意思是get,put,post,delete操作).相反,它为其他服务提供了一些计算结果.根据请求,我的服务进行一些计算,然后返回结果(不将结果存储在自己的数据库中).
以下是我对如何实现REST接口的理解.如果我错了,请纠正我.
我错过了什么?这种方法一般是否正确?
一个元组,包含一个打开文件的操作系统级句柄(由os.open()返回)和该文件的绝对路径名,按顺序排列.
如何将操作系统级别的句柄转换为文件对象?
要将文件描述符包装在"文件对象"中,请使用fdopen().
所以我尝试过:
>>> import tempfile
>>> tup = tempfile.mkstemp()
>>> import os
>>> f = os.fdopen(tup[0])
>>> f.write('foo\n')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud) 使用pytest,可以使用装饰器标记测试
@pytest.mark.slow
def some_slow_test():
pass
Run Code Online (Sandbox Code Playgroud)
然后,从命令行,可以告诉pytest跳过标记为"慢"的测试
pytest -k-slow
Run Code Online (Sandbox Code Playgroud)
如果我有一个额外的标签:
@pytest.mark.long
def some_long_test()
pass
Run Code Online (Sandbox Code Playgroud)
我希望能够跳过长期和慢速测试.我试过这个:
pytest -k-slow -k-long
Run Code Online (Sandbox Code Playgroud)
还有这个:
pytest -k-slow,long
Run Code Online (Sandbox Code Playgroud)
似乎都不起作用.
在命令行中,如何告诉pytest跳过慢和长测试?
我正在扩展Guice,AbstractModule并且在扩展类中我需要访问Guice的注入器.这可能,如果是的话,怎么样?
resolver(我想要执行此处描述的方法,但它没有不行ember generate service logger
Run Code Online (Sandbox Code Playgroud)
服务/ logger.js
export default Ember.Object.extend({
log: function(message){
console.log(message);
}
});
Run Code Online (Sandbox Code Playgroud)
初始化/记录器-service.js
export function initialize(container, application) {
application.inject('route', 'loggerService', 'service:logger');
application.inject('controller', 'loggerService', 'service:logger');
}
Run Code Online (Sandbox Code Playgroud)
loggerService在应用程序控制器的动作处理程序中,通过其注入名称访问该服务:
模板/ application.hbs
<button id='do-something-button' {{action 'doSomething'}}>Do Something</button>
Run Code Online (Sandbox Code Playgroud)
控制器/ application.hs
export default Ember.Controller.extend({
actions: {
doSomething: function(){
// access the injected service
this.loggerService.log('log something');
}
}
});
Run Code Online (Sandbox Code Playgroud)
我创建了一个验收测试,检查按钮单击是否触发了服务.目的是模拟服务并确定是否在没有实际触发服务实现的情况下调用它 - 这避免了实际服务的副作用.
ember generate acceptance-test application
Run Code Online (Sandbox Code Playgroud)
测试/接受/应用test.js
import Ember …Run Code Online (Sandbox Code Playgroud) 我有一个django模型和一个代表用户全名的字段.我的客户希望我设置一个过滤器来根据字符串数组搜索用户,其中所有字符串都必须在全名中包含不区分大小写.
例如
如果是用户 full_name = "Keith, Thomson S."
我有一份清单 ['keith','s','thomson']
我想执行相当于的过滤器
Profile.objects.filter(full_name__icontains='keith',full_name__icontains='s',full_name__icontains='thomson')
Run Code Online (Sandbox Code Playgroud)
问题是这个列表可以是动态大小 - 所以我不知道如何做到这一点.
有人有主意吗?
从Ember 1.0- pre2转换为最新版本(43354a98)和新路由器时遇到问题,即 -
如果我有一个路由只加载一堆记录的名称和ID,并尝试将每个记录链接到另一个应该显示完整模型的路径,当我到达新路径时,新模型永远不会被加载,名称和ID是唯一可用的属性.
示例代码:
App.Router.map(function() {
this.route("index");
this.resource("birds");
this.resource("bird", {
path: "/birds/:bird_id"
});
});
App.BirdsController = Ember.ArrayController.extend({
birds: [
{
name: "Pigeon",
id: "b.15"
}, {
name: "Chicken",
id: "b.133"
}, {
name: "Turkey",
id: "b.126"
}, {
name: "Ostrich",
id: "b.4"
}, {
name: "Barn Owl",
id: "b.47"
}
]
});
App.BirdRoute = Ember.Route.extend({
model: function(params) {
return App.Bird.find(params.bird_id);
}
});
{{#each bird in birds}}
<li>{{#linkTo "bird" bird}}{{bird.name}}{{/linkTo}}</li>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
其中App.Bird.find()运行一些XHR来从一组远程API(不使用ember-data)构建Ember.Object.仅为此示例将鸟类列表硬编码到控制器中,以简化问题; 在我的实际应用程序中,该列表来自远程API.
我看到的行为是,如果你开始/鸟类并点击其中一个链接,路由器将转换为'bird',你到达/#/birds/b.5,但App.Bird.find()是从来没有打电话,我在页面上的唯一数据是"name"和"id".但是,如果您重新加载页面,它会调用App.Bird.find()并正确构建并显示模型.
有没有办法从URL中的ID强制反序列化,或者只是将ID传递给linkTo而不是它将假定完成的对象?我有一个类似的实现与旧路由器正常工作.
我试图在Windows机器上设置DJango restframework,当我运行代码时出现以下错误,
完成的步骤.
使用easy_install我安装了所有软件包.
这是确认消息,
C:\ Python27\Scripts> easy_install django-rest搜索django-rest最佳匹配:django-rest 0.0.1处理django_rest-0.0.1-py2.7.egg django-rest 0.0.1已经是easy的活动版本了-install.pth
使用c:\ python27\lib\site-packages\django_rest-0.0.1-py2.7.egg处理django-rest的依赖关系django-rest的已完成处理依赖关系
创建了一个新项目firstwebservice,它创建了所有文件.
编辑settings.py文件并包含django rest,如下所示,
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
Run Code Online (Sandbox Code Playgroud)跑完项目
Error:-No module named rest_framework...
Run Code Online (Sandbox Code Playgroud)我想为像Markdown这样的标记语言编写一个惯用的解析器.我的版本会略有不同,但我认为在Clojure中至少需要一些这样的东西,而且我想加入它.
我不想使用一堆乱七八糟的RegExes(虽然我意识到可能需要一些),而且我想要制作既强大又适用于Ciojure的东西.
我已经开始了一些不同的尝试(主要是在纸面上),但我对它们非常满意,因为我觉得我只是即兴创作.那没关系,但在过去的一两个月里,我已经用Clojure的语言进行了大量的探索,并希望至少部分地遵循巨人的路径.
我想要一些指示,建议或资源(来自O'Reilly的书很棒 - 爱我一些电子书 - 但亚马逊或其他地方也很棒).无论你能提供什么.
编辑 Brian Carper有一篇关于使用Clojure的ANTLR的有趣帖子.
还有clojure-pg和fnparse,它们是Clojure解析器生成器.fnparse甚至看起来它有一些像样的文档.
还在寻找资源等!我以为我会用自己的一些调查结果来更新这些内容.