小编Cra*_*den的帖子

Git:从其他分支拉

我在GitHub上的一个项目中创建了一个fork.我现在如何从我分叉的项目中提取更改?

git github

168
推荐指数
2
解决办法
29万
查看次数

Django REST框架:非模型序列化器

我是Django REST框架的初学者,需要你的建议.我正在开发一个Web服务.该服务必须为其他服务提供REST接口.我需要实现的REST接口不能直接使用我的模型(我的意思是get,put,post,delete操作).相反,它为其他服务提供了一些计算结果.根据请求,我的服务进行一些计算,然后返回结果(不将结果存储在自己的数据库中).

以下是我对如何实现REST接口的理解.如果我错了,请纠正我.

  1. 创建进行计算的类.将其命名为"CalcClass".CalcClass在其工作中使用模型.
    • 计算所需的参数传递给构造函数.
    • 实现calc操作.它将结果返回为"ResultClass".
  2. 创建ResultClass.
    • 源自对象.
    • 它只包含含有calc结果的属性.
    • calc结果的一部分表示为元组的元组.据我了解,进一步序列化为这些结果实现一个单独的类并将这些对象的列表添加到ResultClass会更好.
  3. 为ResultClass创建序列化程序.
    • 从serializers.Serializer派生.
    • calc结果是只读的,因此主要使用Field类作为字段,而不是专门的类,例如IntegerField.
    • 我不应该在ResultClass和Serializer上都不会使用save()方法,因为我不会存储结果(我只想根据请求返回它们).
    • Impl序列化器用于嵌套结果(记住上面提到的元组元组).
  4. 创建视图以返回计算结果.
    • 来自APIView.
    • 需要get().
    • 在get()中创建CalcClass,其中包含从请求中检索的params,调用其calc(),获取ResultClass,创建Serializer并将ResultClass传递给它,返回Response(serializer.data).
  5. 网址
    • 在我的案例中没有api root.我应该有URL来获得各种计算结果(使用diff params计算).
    • 为api浏览添加调用format_suffix_patterns.

我错过了什么?这种方法一般是否正确?

django rest django-rest-framework

148
推荐指数
1
解决办法
4万
查看次数

Python - 如何将"操作系统级别句柄转换为打开文件"转换为文件对象?

tempfile.mkstemp()返回:

一个元组,包含一个打开文件的操作系统级句柄(由os.open()返回)和该文件的绝对路径名,按顺序排列.

如何将操作系统级别的句柄转换为文件对象?

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)

python mkstemp fdopen temporary-files

50
推荐指数
3
解决办法
2万
查看次数

Pytest:取消选择测试

使用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跳过慢和长测试?

python pytest

43
推荐指数
3
解决办法
1万
查看次数

在其模块中访问Guice注入器?

我正在扩展Guice,AbstractModule并且在扩展类中我需要访问Guice的注入器.这可能,如果是的话,怎么样?

java dependency-injection guice

32
推荐指数
1
解决办法
2万
查看次数

如何在验收测试中模拟Ember-CLI服务?

快速摘要/ tldr:

  • 似乎Ember的容器查找过程+ Ember-CLI的模块解析器不允许手动取消注册服务然后注册替换,如果原始服务可以使用resolver(我想要执行此处描述的方法,但它没有不行
  • 如何在不使用hacky自定义解析器的情况下在验收测试中模拟Ember-CLI服务?(这里的示例项目/验收测试)

详细解释+例子

创建一个注入控制器的新服务:

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)

ember.js ember-cli

31
推荐指数
2
解决办法
8616
查看次数

过滤Django数据库以获取包含数组中任何值的字段

我有一个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)

问题是这个列表可以是动态大小 - 所以我不知道如何做到这一点.

有人有主意吗?

python django django-models

26
推荐指数
2
解决办法
3万
查看次数

在最新的Ember中,如何链接到仅包含模型的id/name的路由,而不是在链接页面中提供其所有属性?

从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而不是它将假定完成的对象?我有一个类似的实现与旧路由器正常工作.

ember.js ember-router

15
推荐指数
1
解决办法
8818
查看次数

配置Django-rest

我试图在Windows机器上设置DJango restframework,当我运行代码时出现以下错误,

完成的步骤.

  1. 从github下载的rest-framework和其他实用程序
  2. 使用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的已完成处理依赖关系

  3. 创建了一个新项目firstwebservice,它创建了所有文件.

  4. 编辑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)
  5. 跑完项目

    Error:-No module named rest_framework...
    
    Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

15
推荐指数
1
解决办法
2万
查看次数

编写解析器(用于标记语言):理论与实践

我想为像Markdown这样的标记语言编写一个惯用的解析器.我的版本会略有不同,但我认为在Clojure中至少需要一些这样的东西,而且我想加入它.

我不想使用一堆乱七八糟的RegExes(虽然我意识到可能需要一些),而且我想要制作既强大又适用于Ciojure的东西.

我已经开始了一些不同的尝试(主要是在纸面上),但我对它们非常满意,因为我觉得我只是即兴创作.那没关系,但在过去的一两个月里,我已经用Clojure的语言进行了大量的探索,并希望至少部分地遵循巨人的路径.

我想要一些指示,建议或资源(来自O'Reilly的书很棒 - 爱我一些电子书 - 但亚马逊或其他地方也很棒).无论你能提供什么.

编辑 Brian Carper有一篇关于使用Clojure的ANTLR的有趣帖子.

还有clojure-pgfnparse,它们是Clojure解析器生成器.fnparse甚至看起来它有一些像样的文档.

还在寻找资源等!我以为我会用自己的一些调查结果来更新这些内容.

parsing clojure

14
推荐指数
2
解决办法
4389
查看次数