我在测试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) 我正在尝试使用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,并且三角形颜色最终没有变化.
由于某种原因,这在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)?
当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装饰者的新手,所以也许我错过了一些简单的东西,这是我的情况:
这对我有用:
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)
有没有办法将装饰器与设置字典一起使用,或者我做错了什么?
提前致谢!
我有一个 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
可能会遗漏一些简单的语法,但我似乎无法使用相同的过滤器来工作:
我可以
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链接:
我试图访问Tensorboard作为tensorflow_resnet_cifar10_with_tensorboard
示例,但不确定url应该是什么,帮助文本提供了2个选项:
您可以在http:// localhost:6006本地访问TensorBoard,或者使用您的SageMaker笔记本实例代理/ 6006 /(如果忘记在网址的末尾添加斜杠'/',TensorBoard将无法工作).如果TensorBoard在其他端口上启动,请调整这些URL以匹配.
当它说本地访问时,这是否意味着Sagemaker在AWS中创建的本地容器?如果是这样,我该如何到达那里?
或者,如果我使用run_tensorboard_locally=False
,代理网址应该是什么?
django ×4
python ×4
angularjs ×3
javascript ×3
css ×1
django-mptt ×1
html ×1
jquery ×1
restangular ×1
testing ×1
unit-testing ×1