小编Azi*_*ari的帖子

AngularJS - 访问子范围

如果我有以下控制器:

function parent($scope, service) {
    $scope.a = 'foo';

    $scope.save = function() {
        service.save({
            a:  $scope.a,
            b:  $scope.b
        });
    }
}

function child($scope) {
    $scope.b = 'bar';
}
Run Code Online (Sandbox Code Playgroud)

什么是让你parentb出来的正确方法child?如果有必要定义bparent,也不会使它语义上不正确假设b是描述相关的东西的属性child,而不是parent

更新:进一步思考它,如果有一个以上的孩子b,它将产生一个冲突parent,b以便检索.我的问题是,什么是访问的正确方法是bparent

angularjs

109
推荐指数
3
解决办法
15万
查看次数

Twitter Bootstrap - 响应词缀

我正在使用Twitter Bootstrap,我有以下内容:

<div class="row">

    <div class="span3">
        <div data-spy="affix">
            <form>
                <!-- inputs and stuff -->
            </form>
        </div>
    </div>

    <!-- span9 and its contents -->

</div>
Run Code Online (Sandbox Code Playgroud)

Bootstrap正确应用了词缀效果,<div>当我向下滚动页面时它保持静止.但是,一旦我将页面调整为移动尺寸并引导自适应响应效果(导航栏折叠/对象在彼此之下很好地对齐),粘贴<div>现在位于页面的其他元素之上并且它变得混乱.这是发生,因为.affixposition: fixed这解释了它相当不错.

现在我去了Bootstrap的网站,并将页面调整为移动尺寸,附加元素(<ul>在他们的情况下)开始与页面很好地流动,采取其自然的位置,而不是在其他元素之上.我也注意到,一旦出现这种情况,则类是从变affixaffix-top.

我不确定这是否是他们的自定义或者它是否是框架的一部分,因为框架显然不是以相同的方式运行.任何人都可以详细说明这个吗?我需要在我的<div>位置具有相同的行为如果页面被调整为移动尺寸,则附加元素占据其自然位置.

编辑:我的观察有点缺陷.我注意到他们页面上的元素最初有affix-top,一旦我在data-top-offset它下面滚动它就会改变affix.它仍然无法解释为什么我<div>不会像<ul>调整大小时那样渲染.

twitter-bootstrap

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

AngularJS - 将值从后端传递到前端

在后端将值从后端传递给AngularJS的最佳方法是什么?我正在使用Django并且模板能够吐出我需要的值,但是我不确定将这些值传递给AngularJS的最佳做法是什么.

想想一篇博客文章及其评论,如果我有一个AngularJS服务,通过将帖子ID传递给服务来检索某个博客文章的所有评论,Django正在呈现HTML模板,它确实知道帖子ID是什么,但是我需要将此帖子ID传递给AngularJS,然后传递给服务.

一个想法是将其隐藏<input>并将此输入分配给模型.不太吸引人.

另一个是有一个指令并将一个属性中的这个值传递给这个指令,这样我就可以访问这个属性的值:

// Django (or any backend) is rendering {{ object.value }}
<div class="myDirective" data-object-id={{ object.value }}>
   ...
</div>

angular.module('myDirectives', []).
    directive('myDirective', function() {
        return {
            restrict: 'C',
            transclude: false,
            link: function postLink($scope, $element, $attrs) {
                // $attrs.objectId would have the value
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

这两种方法看起来很好.但我想知道是否有更清洁的方法这样做?遵循AngularJS最佳实践的任何方法?

angularjs

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

Django REST框架 - 序列化可选字段

我有一个具有可选字段的对象.我用这种方式定义了我的序列化器:

class ProductSerializer(serializers.Serializer):
    code = serializers.Field(source="Code")
    classification = serializers.CharField(source="Classification", required=False)
Run Code Online (Sandbox Code Playgroud)

如果它不存在,我认为 required=False可以绕过该字段.但是,文档中提到这会影响反序列化而不是序列化.

我收到以下错误:

'Product' object has no attribute 'Classification'
Run Code Online (Sandbox Code Playgroud)

当我尝试访问.data序列化实例时会发生这种情况.(这是不是意味着反序列化提高了这个?)

这种情况发生在没有的情况下Classification.如果我省略Classification了序列化程序类,它可以正常工作.

我该如何正确地做到这一点?使用可选字段序列化对象,即.

python django serialization django-rest-framework

28
推荐指数
4
解决办法
3万
查看次数

Django - 多个用户配置文件

最初,我像这样开始我的UserProfile:

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    verified = models.BooleanField()
    mobile = models.CharField(max_length=32)

    def __unicode__(self):
        return self.user.email
Run Code Online (Sandbox Code Playgroud)

哪个适用于AUTH_PROFILE_MODULE = 'accounts.UserProfile'设置settings.py.

但是,我的网站中有两种不同的用户,个人和企业,每个都有自己独特的属性.例如,我希望我的个人用户只有一个用户,因此拥有user = models.OneToOneField(User),而对于企业,我希望他们有多个用户与相同的个人资料相关,所以我会user = models.ForeignKey(User)改为.

所以我考虑将模型分成两个不同的模型,IndivProfile并且CorpProfile都继承自UserProfile将模型特定的属性移动到相关的子模型中.对我来说似乎是一个好主意并且可能会有效,但是我无法指定AUTH_PROFILE_MODULE这种方式,因为我有两个不同用户的用户配置文件.

我也考虑过这样做,UserProfile从多个类(模型)继承,如下所示:

class UserProfile(IndivProfile, CorpProfile):
    # some field

    def __unicode__(self):
        return self.user.email
Run Code Online (Sandbox Code Playgroud)

这样我就可以设置AUTH_PROFILE_MODULE = 'accounts.UserProfile'并解决它的问题.但是看起来它看起来不会起作用,因为python中的继承从左到右工作,所有变量IndivProfile都占主导地位.

当然,我总是可以将一个模型IndivProfileCorpProfile变量全部混合在一起,然后我会在必要时使用所需的模型.但这对我来说看起来并不干净,我宁愿让它们隔离并在适当的地方使用适当的模型.

的任何建议清洁这样的方式?

django django-models django-users

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

指向s3boto中的多个S3存储桶

settings.py我有:

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'xxxxxxxxxxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxxx'
AWS_STORAGE_BUCKET_NAME = 'static.mysite.com'
Run Code Online (Sandbox Code Playgroud)

这指向我的S3存储桶static.mysite.com并且在我这样做时工作正常manage.py collectstatic,它将所有静态文件上传到我的存储桶.不过,我还有一个水桶,我用不同的目的,想如果我有这样的模型在网站的某些地区使用,例如:

class Image(models.Model):
    myobject = models.ImageField(upload_to='my/folder')
Run Code Online (Sandbox Code Playgroud)

现在Image.save()调用它时,它仍会将文件上传到S3存储桶中AWS_STORAGE_BUCKET_NAME,但是我希望它Image.save()指向另一个S3存储桶.任何清洁这样的方式?我不想改变settings.py运行时间,也不想实现任何违反django关键原则的做法,即具有可插入的易于更改的后端存储.

django amazon-s3 django-storage

14
推荐指数
1
解决办法
2085
查看次数

Django - 手动将图像保存到ImageField字段

以下代码在保存后拍摄图像并从中制作缩略图:

class Image(models.Model):
    image     = models.ImageField(upload_to='images')
    thumbnail = models.ImageField(upload_to='images/thumbnails', editable=False)

    def save(self, *args, **kwargs):
       super(Image, self).save(*args, **kwargs)
       if self.image:
           from PIL import Image as ImageObj
           from cStringIO import StringIO
           from django.core.files.uploadedfile import SimpleUploadedFile

           try:
               # thumbnail
               THUMBNAIL_SIZE = (160, 160)  # dimensions

               image = ImageObj.open(self.image)

               # Convert to RGB if necessary
               if image.mode not in ('L', 'RGB'): image = image.convert('RGB')

               # create a thumbnail + use antialiasing for a smoother thumbnail
               image.thumbnail(THUMBNAIL_SIZE, ImageObj.ANTIALIAS)

               # fetch image into memory
               temp_handle = …
Run Code Online (Sandbox Code Playgroud)

django django-models python-imaging-library

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

Django - 从模型中通过芹菜执行任务

在我的models.py中:

from django.db import models
from core import tasks

class Image(models.Model):
    image     = models.ImageField(upload_to='images/orig')
    thumbnail = models.ImageField(upload_to='images/thumbnails', editable=False)

    def save(self, *args, **kwargs):
       super(Image, self).save(*args, **kwargs)
       tasks.create_thumbnail.delay(self.id)
Run Code Online (Sandbox Code Playgroud)

在我的tasks.py中:

from celery.decorators import task
from core.models import Image

@task()
def create_thumbnail(image_id):
    ImageObj = Image.objects.get(id=image_id)
    # other stuff here
Run Code Online (Sandbox Code Playgroud)

这将返回以下内容:

  • 异常类型: ImportError
  • 异常值:无法导入名称任务

如果我注释掉错误消失from core.models import Imagetasks.py,但是这显然会造成一个问题,因为Image在这里没有任何意义.我试图在里面导入它,create_thumbnail但它仍然无法识别Image.

我已经读过某个地方,通常对象本身可以作为参数传递给任务,这将解决我的问题.但是,一位朋友曾告诉我,在RabbitMQ消息中尽可能少地发送数据被认为是最佳做法,所以为了实现这一点,我试图只传递图像ID,然后在任务中再次检索它.

1)我正在尝试做的是最佳做法吗?如果是,我该如何解决?

2)我注意到在网络上发现的所有示例中,他们从视图执行任务,而不是从模型执行任务.我正在尝试在上传新图像时创建缩略图,我不想在我拥有的每个表单/视图中调用create_thumbnail.有什么想法吗?是从不推荐的模型执行任务还是通常的做法?

django rabbitmq celery

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

Django - 导入storages.backends时出错

我创建了一个自定义存储后端,该文件被调用storages.py并放置在一个名为的应用程序中core:

from django.conf import settings
from storages.backends.s3boto import S3BotoStorage

class S3StaticBucket(S3BotoStorage):
    def __init__(self, *args, **kwargs):
        kwargs['bucket_name'] = getattr(settings, 'static.mysite.com')
        super(S3BotoStorage, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

settings.py,我有以下内容:

STATICFILES_STORAGE = 'core.storages.S3StaticBucket'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做python manage.py collectstatic时显示以下错误:

django.core.exceptions.ImproperlyConfigured: Error importing storage module core.storages: "No module named backends.s3boto"
Run Code Online (Sandbox Code Playgroud)

当我运行python manage.py shell并尝试导入相同的:

>>> 
>>> from django.conf import settings
>>> from storages.backends.s3boto import S3BotoStorage
>>> 
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

django django-storage

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

AngularJS - ngModel绑定下拉列值在视觉上发生变化,而变量则没有

我有一个下拉列表:

<select
   ng-model="filter.country"
   ng-options="country.code as country.name for country in countries"
   ng-change="broadcast()">
   <option value="">All Countries</option>
</select>
Run Code Online (Sandbox Code Playgroud)

$scope.countries最初由服务填充,然后另一个下拉更改事件将$scope.countries通过再次调用服务来限制值,通过另一个下拉列表的选定项.

这里的问题是什么时候$scope.filter.country绑定了一个值(默认值除外)并$scope.countries更新到一个不包含$scope.filter.country值的新列表.我可以看到国家/地区下拉列表恢复其默认选项"所有国家/地区",但$scope.filter.country仍保持原样.

关于这种情况的任何想法?不应该$scope.filter.country更新回到默认值?

更新:这是一个小提琴

更新:

为了说明这一点,这里是一个小提琴的截图: 在此输入图像描述

这对我来说看起来像个错误,我已经为它开了一个问题.

更新:这已由angularjs团队解决和修复 ; 在这里演示.

javascript angularjs

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