小编Nea*_*ara的帖子

如何在heroku上设置django-compressor,离线压缩到S3

我按照在SO和不同博客中找到的每个QA建议,在我的开发机器上一切正常,在heroku上没有任何作用.

这是我的设置:

DEFAULT_FILE_STORAGE = 'arena.utils.MediaRootS3BotoStorage' # media files
# storage

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_PRELOAD_METADATA = True # necessary to fix manage.py collectstatic command to only upload changed files instead of all files

S3_URL = 'https://%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
MEDIA_URL = S3_URL + '/media/'

STATIC_URL = S3_URL + '/static/'

ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'


COMPRESS_URL = STATIC_URL
COMPRESS_OFFLINE = True
COMPRESS_STORAGE = 'utils.CachedS3BotoStorage'
STATICFILES_STORAGE = COMPRESS_STORAGE
Run Code Online (Sandbox Code Playgroud)

当我运行collectstatic/compress时,一切正常,我看到文件被收集到S3并放入适当的位置.我看到了清单文件.

加载任何带有压缩标签的页面,显示错误再次OfflineGenerationError: You have offline compression enabled but key …

django heroku amazon-s3 django-compressor

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

Django/Celery在localhost上有多个队列 - 路由无法正常工作

我跟着celery docs在我的开发机器上定义了2个队列.

我的芹菜设置:

CELERY_ALWAYS_EAGER = True
CELERY_TASK_RESULT_EXPIRES = 60  # 1 mins
CELERYD_CONCURRENCY = 2
CELERYD_MAX_TASKS_PER_CHILD = 4
CELERYD_PREFETCH_MULTIPLIER = 1
CELERY_CREATE_MISSING_QUEUES = True
CELERY_QUEUES = (
    Queue('default', Exchange('default'), routing_key='default'),
    Queue('feeds', Exchange('feeds'), routing_key='arena.social.tasks.#'),
)
CELERY_ROUTES = {
    'arena.social.tasks.Update': {
        'queue': 'fs_feeds',
    },
}
Run Code Online (Sandbox Code Playgroud)

我在我的项目的virtualenv中打开了两个终端窗口,并运行以下命令:

terminal_1$ celery -A arena worker -Q default -B -l debug --purge -n deafult_worker
terminal_2$ celery -A arena worker -Q feeds -B -l debug --purge -n feeds_worker
Run Code Online (Sandbox Code Playgroud)

我得到的是所有任务都由两个队列处理.

我的目标是让一个队列只处理在其中定义的一个任务CELERY_ROUTES和默认队列来处理所有其他任务.

我也按照这个SO问题,rabbitmqctl list_queues …

python django celery celerybeat

11
推荐指数
1
解决办法
8206
查看次数

Angularjs - ng-disabled无法正常工作

我试图input在用户选择文件后禁用文件标记.

HTML:

<div ng-controller='firstController'>
    <div ng-controller='secondController'>
      <input type="file" name="file" upload class="theFileInput" ng-disabled="fileInMemory">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JS,第一控制器:

$scope.fileInMemory = false; // tracks if user selected a file for upload, but didn't upload it
$rootScope.$on('fileAdded', function () {
     $scope.fileInMemory = true;
     console.log($scope.fileInMemory);
});
Run Code Online (Sandbox Code Playgroud)

upload 是一个指令.

在页面加载时,ng-disabled具有false应该fileInMemory更改时,input标记仍未被禁用.console.log表明价值fileInMemory正在发生变化.

到目前为止我尝试了什么

<input type="file" name="file" class="theFileInput" ng-disabled="'fileInMemory'">
Run Code Online (Sandbox Code Playgroud)

只是禁用该字段,什么时候fileInMemory是假的.

<input type="file" name="file" class="theFileInput" ng-disabled="fileInMemory == 'true'">
Run Code Online (Sandbox Code Playgroud)

不行.

<input type="file" name="file" class="theFileInput" ng-disabled="{{fileInMemory}}">
Run Code Online (Sandbox Code Playgroud)

仍然无法正常工作. …

html javascript angularjs

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

Django视图有一个意想不到的关键字参数

我有以下网址模式:

urlpatterns = pattern('',
    ...
    url(r'edit-offer/(?P<id>\d+)/$', login_required(edit_offer), name='edit_offer'),
)
Run Code Online (Sandbox Code Playgroud)

以及相应的edit_offer视图:

def edit_offer(request, id):
  # do stuff here
Run Code Online (Sandbox Code Playgroud)

优惠页面上的链接可导致编辑优惠视图:

<a class="btn" href="{% url edit_offer offer.id %}">Edit</a>
Run Code Online (Sandbox Code Playgroud)

单击该按钮会引发TypeError:

edit_offer() got an unexpected keyword argument 'offer_id'
Run Code Online (Sandbox Code Playgroud)

有什么想法发生了什么?我不明白这里有什么问题.我有其他类似模式的视图,它们都可以正常工作.

django python-2.7

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

Django db error:在尝试使用jsonfield注释模型时,无法为类型json标识等于运算符

我正在使用Django 1.5.4和PostgreSQL 9.3,使用django-jsonfield进行JSONField.

以下查询抛出db错误(无法识别类型json的相等运算符):

ModelWithJsonField.objects.annotate(count=Count('field_to_count_by'))
Run Code Online (Sandbox Code Playgroud)

field_to_count_by不是JSONField,普通的int字段.

任何想法如何我可以解决问题,仍然使用注释?

引擎盖后面有什么注释?

python django orm django-models django-jsonfield

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

Celery/Redis同时执行多次并行任务

我有两个自定义任务(TaskATaskB),都继承自celery.Task.计划推出TaskA现在再逢,并TaskA推出N时间TaskB有不同的参数,每次.但由于某种原因,有时相同TaskB,具有相同的参数,同时执行两次,这会导致数据库出现不同的问题.

class TaskA(celery.Task):

    def run(self, *args, **kwargs):
        objects = MyModel.objects.filter(processed=False)\
                                 .values_list('id', flat=True)
        task_b = TaskB()
        for o in objects:
            o.apply_async(args=[o, ])

class TaskB(celery.Task):

    def run(self, obj_id, *args, **kwargs):
        obj = MyModel.objects.get(id=obj_id)
        # do some stuff with obj
Run Code Online (Sandbox Code Playgroud)

我尝试过的事情

我试图使用celery.group它希望它能解决这些问题,但我得到的只是错误,说run有2个参数而没有提供.

这就是我尝试TaskB使用的方式celery.group:

# somewhere in TaskA
task_b = TaskB()
g = celery.group([task_b.s(id) for id in objects])
g.apply_async()
Run Code Online (Sandbox Code Playgroud)

我也尝试过这样: …

python django redis celery

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

Django内部API客户端/服务器身份验证与否?

我有一个django项目,其中我暴露了一些api端点(api endpoint =获取/发布的答案,返回json响应,如果我的定义错误,请纠正我).我在前端使用这些端点,如更新计数或获取更新内容,或无数其他内容.我在服务器端,模板中处理表示逻辑,在某些情况下,将呈现的字符串模板发送到客户端.

以下是我试图回答的问题:

  1. 我是否需要在客户端和服务器之间进行某种身份验证?
  2. django交叉起源保护够吗?
  3. 在这张图片中,适合像django-oauth-toolkit这样的软件包?还有django-rest-framework
  4. 如果我不在客户端和服务器之间添加任何身份验证,我是否会打开我的服务器进行攻击?

此外,服务器到服务器的连接是什么?这两台服务器都在我的控制

python api django rest oauth

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

Django:在debug = false上提供静态文件

我知道这个问题被多次询问过,但我发现和尝试的答案都没有帮助我.

这些是我的静态文件设置:

STATIC_ROOT = os.path.abspath(SETTINGS_PATH+'/staticfiles/')

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/staticfiles/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(os.path.dirname(__file__), 'static'),
    )

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
) 
Run Code Online (Sandbox Code Playgroud)

在myapp/urls.py中: …

django django-staticfiles django-1.4

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

Twitter API/Twython - 显示用户获取用户个人资料图片

如何使用Twython获取用户个人资料图片?

我看到show_user()方法,但用api密钥和secret + oauth标记和秘密实例化Twython,并调用此方法返回404 : TwythonError: Twitter API returned a 404 (Not Found), Sorry, that page does not exist.

从Twython实例化的wo api/oauth键调用相同的方法返回400 : TwythonAuthError: Twitter API returned a 400 (Bad Request), Bad Authentication data.

我也尝试过GET用户信息https://api.twitter.com/1.1/users/show.json?screen_name=USERSCREENNAME,并获得了400.

我将非常感谢对twitter api 1.1进行身份验证请求的工作示例.在twitter api参考上找不到它.

python twitter twython

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

Python/Django SMTP DebugServer不会捕获电子邮件

我以这种方式启动服务器(在mac上):

python -m smtpd -n -c DebuggingServer localhost:9999
Run Code Online (Sandbox Code Playgroud)

我没有收到任何错误或任何其他通知.我想这意味着一切都好,如果我错了,请纠正我.

但是当我从django shell或我的应用程序发送电子邮件时,使用带有fail_silently = False的send_mail/mail_managers,我在smtpd调试服务器上看不到任何输出.我没有得到任何SMTP错误,send_mail/mail_managers返回1.

我跑了:

lsof -i | grep LISTEN
Run Code Online (Sandbox Code Playgroud)

看看是否有人收听9999端口,而且没有人收听.这是否意味着smtp调试服务器出了问题?它应该显示在听众列表中吗?

我的电邮设置:

EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 9999
Run Code Online (Sandbox Code Playgroud)

django smtp python-2.x smtpd

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

Jquery.validate - 一个页面 - 多个表单,一个提交ok,其他没有

在我的页面上,我有3个完整的表单,每个表单都有自己的提交按钮,每个表单和按钮都有不同的ID.

<form action="" method="post" class="form-horizontal" id="formA">
   ...
   <button id="formASend" type="submit" class="btn"> Submit</button>
</form>

<form action="" method="post" class="form-horizontal" id="formB">
   ...
   <button id="formBSend" type="submit" class="btn"> Submit</button>
</form>

<form action="" method="post" class="form-horizontal" id="formC">
   ...
   <button id="formCSend" type="submit" class="btn"> Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

在javascript中,我对每个提交按钮都有以下逻辑:

$.validator.setDefaults({
        debug:true,
        errorElement: 'span', //default input error message container
        errorClass: 'help-inline', // default input error message class
        focusInvalid: false, // do not focus the last invalid input)
        highlight: function (element) { // hightlight error inputs
            $(element).closest('.control-group').addClass('error'); // set error class to the …
Run Code Online (Sandbox Code Playgroud)

forms jquery jquery-validate

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