小编WBC*_*WBC的帖子

Django Rest Framework - 如何测试ViewSet?

我在测试ViewSet时遇到问题:

class ViewSetTest(TestCase):
    def test_view_set(self):
        factory = APIRequestFactory()
        view = CatViewSet.as_view()
        cat = Cat(name="bob")
        cat.save()

        request = factory.get(reverse('cat-detail', args=(cat.pk,)))
        response = view(request)
Run Code Online (Sandbox Code Playgroud)

我正在尝试复制语法:

http://www.django-rest-framework.org/api-guide/testing#forcing-authentication

但我认为他们的AccountDetail视图与我的ViewSet不同,所以我从最后一行收到此错误:

AttributeError: 'NoneType' object has no attributes 'items'
Run Code Online (Sandbox Code Playgroud)

这里有正确的语法还是我混淆概念?我的APIClient测试工作,但我在这里使用工厂,因为我最终想添加"request.user = some_user".提前致谢!

哦,客户端测试工作正常:

def test_client_view(self):
    response = APIClient().get(reverse('cat-detail', args=(cat.pk,)))
    self.assertEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

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

如何改变Angular中之前/之后的样式?

我正在尝试使用CSS中的前/后三角形实现面包屑,如本教程所示:

http://css-tricks.com/triangle-breadcrumbs/

相关摘要:

<ul class="breadcrumb">
    <li><a href="#">Home</a></li>
</ul>

.breadcrumb li a {
    color: white;
    text-decoration: none; 
    padding: 10px 0 10px 65px;
    background: hsla(34,85%,35%,1); 
    position: relative; 
    display: block;
    float: left;
}

.breadcrumb li a:after { 
    content: " "; 
    display: block; 
    width: 0; 
    height: 0;
    border-top: 50px solid transparent;           
    border-bottom: 50px solid transparent;
    border-left: 30px solid hsla(34,85%,35%,1);
    position: absolute;
    top: 50%;
    margin-top: -50px; 
    left: 100%;
    z-index: 2; 
}
Run Code Online (Sandbox Code Playgroud)

但是,我将它用作定向流程,例如:

Main_Category >> Sub_Category >>详细信息

此流程从Main_Category突出显示,其他两个部分变暗,并且您可以从中选择.在选择时,Sub_Category突出显示,另一个弹出.

我的问题是如果它们是伪元素,如何更改前/后边框颜色?所以从教程中,我认为可以在主要部分做到这一点:

<li><a href="#" ng-style="background: {{color}}">Home</a></li>
Run Code Online (Sandbox Code Playgroud)

但是我无法在之前/之后设置ng-style,并且三角形颜色最终没有变化.

html javascript css jquery angularjs

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

Angularjs/Restangular,如何命名文件blob进行下载?

由于某种原因,这在IE中比Chrome/FF更容易:

$scope.download = function() {
    Restangular.one(myAPI)
      .withHttpConfig({responseType: 'blob'}).customGET().then(function(response) {

        //IE10 opens save/open dialog with filename.zip
        window.navigator.msSaveOrOpenBlob(response, 'filename.zip');

        //Chrome/FF downloads a file with random name                
        var url = (window.URL || window.webkitURL).createObjectURL(response);
        window.location.href = url;
    });
};
Run Code Online (Sandbox Code Playgroud)

有没有办法做类似于IE10 +的工作方式?也就是说,我可以指定一个文件名/类型(只会是zip)?

javascript angularjs restangular

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

如何在Django Rest Framework中返回403错误的数据?

当GET请求转到API后端时 /obj/1

我检查自定义权限类以查看用户是否有权访问,如果没有,则返回403.

但是,我想附加对象ID,以便用户可以单击前端的按钮来请求访问.

我当前的实现是覆盖retrieve方法并在那里"手动"检查权限.

简化的权限

class CustomPerm(...):
    def has_object_permission(...):
        return request.user.is_staff
Run Code Online (Sandbox Code Playgroud)

视图集

class CustomViewSet(...):
    model = Model
    permission_classes = (CustomPerm, )

    def retrieve(self, request, pk=None):
        obj = get_object_or_404(Model, pk=pk)

        has_perm = CustomPerm().has_object_permission(request, self, obj=obj)
        if not has_perm:
            data = { 'id': obj.id }
            return Response(data, status=403)

        return super(ModelViewSet, self).retrieve(request, pk=pk)
Run Code Online (Sandbox Code Playgroud)

所以我当前的方法has_perm返回一个用户的QuerySet而不是权限方法中定义的布尔值.怎么会?

对此有更清洁的方法吗?

python django django-rest-framework

8
推荐指数
1
解决办法
5526
查看次数

Django @override_settings不允许字典?

我是Python装饰者的新手,所以也许我错过了一些简单的东西,这是我的情况:

这对我有用:

def test_something(self):
    settings.SETTING_DICT['key'] = True #no error
    ...
Run Code Online (Sandbox Code Playgroud)

但这会抛出"SyntaxError:关键字不能是表达式":

@override_settings(SETTING_DICT['key'] = True) #error
def test_something(self):
   ...
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,正常使用覆盖设置有效:

@override_settings(SETTING_VAR = True) #no error
def test_something(self):
   ...
Run Code Online (Sandbox Code Playgroud)

有没有办法将装饰器与设置字典一起使用,或者我做错了什么?

提前致谢!

python testing django unit-testing django-settings

7
推荐指数
2
解决办法
2403
查看次数

Django MPTT 使用 DRF 高效序列化关系数据

我有一个 MPTT 模型的类别模型。它是 m2m 到 Group,我需要用相关计数序列化树,想象我的类别树是这样的:

Root (related to 1 group)
 - Branch (related to 2 groups) 
    - Leaf (related to 3 groups)
...
Run Code Online (Sandbox Code Playgroud)

所以序列化的输出看起来像这样:

{ 
    id: 1, 
    name: 'root1', 
    full_name: 'root1',
    group_count: 6,
    children: [
    {
        id: 2,
        name: 'branch1',
        full_name: 'root1 - branch1',
        group_count: 5,
        children: [
        {
            id: 3,
            name: 'leaf1',
            full_name: 'root1 - branch1 - leaf1',
            group_count: 3,
            children: []
        }]
    }]
}
Run Code Online (Sandbox Code Playgroud)

这是我目前的超级低效实现:

模型

class Category(MPTTModel):
    name = ...
    parent = ... (related_name='children')

    def get_full_name(self): …
Run Code Online (Sandbox Code Playgroud)

python django serialization django-mptt django-rest-framework

7
推荐指数
1
解决办法
4367
查看次数

如何在Angular中过滤嵌套对象不相等?

可能会遗漏一些简单的语法,但我似乎无法使用相同的过滤器来工作:

我可以

filter: {property:{text:'yes'}},

但不是

filter: {property:{text:'!yes'}},

这适用于非嵌套对象.

HTML:

<ul>
  <li ng-repeat="attr in attributes | filter: {property:{text:'!yes'}}">
    {{attr.property.text}}
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

JS:

$scope.attributes = [
  {property: { text:'yes' }},
  {property: { text:'no' }},
];
Run Code Online (Sandbox Code Playgroud)

Plunkr链接:

http://plnkr.co/edit/2mTcQijmfnqAM5vUtKsK?p=preview

javascript angularjs

5
推荐指数
1
解决办法
5354
查看次数

什么是Tensorboard的SageMaker网址?

我试图访问Tensorboard作为tensorflow_resnet_cifar10_with_tensorboard示例,但不确定url应该是什么,帮助文本提供了2个选项:

您可以在http:// localhost:6006本地访问TensorBoard,或者使用您的SageMaker笔记本实例代理/ 6006 /(如果忘记在网址的末尾添加斜杠'/',TensorBoard将无法工作).如果TensorBoard在其他端口上启动,请调整这些URL以匹配.

当它说本地访问时,这是否意味着Sagemaker在AWS中创建的本地容器?如果是这样,我该如何到达那里?

或者,如果我使用run_tensorboard_locally=False,代理网址应该是什么?

amazon-web-services amazon-sagemaker

5
推荐指数
2
解决办法
2060
查看次数