我按照在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 …
我跟着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 …
我试图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)
仍然无法正常工作. …
我有以下网址模式:
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 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字段.
任何想法如何我可以解决问题,仍然使用注释?
引擎盖后面有什么注释?
我有两个自定义任务(TaskA和TaskB),都继承自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)
我也尝试过这样: …
我有一个django项目,其中我暴露了一些api端点(api endpoint =获取/发布的答案,返回json响应,如果我的定义错误,请纠正我).我在前端使用这些端点,如更新计数或获取更新内容,或无数其他内容.我在服务器端,模板中处理表示逻辑,在某些情况下,将呈现的字符串模板发送到客户端.
以下是我试图回答的问题:
此外,服务器到服务器的连接是什么?这两台服务器都在我的控制
我知道这个问题被多次询问过,但我发现和尝试的答案都没有帮助我.
这些是我的静态文件设置:
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中: …
如何使用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参考上找不到它.
我以这种方式启动服务器(在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) 在我的页面上,我有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) django ×8
python ×5
celery ×2
amazon-s3 ×1
angularjs ×1
api ×1
celerybeat ×1
django-1.4 ×1
forms ×1
heroku ×1
html ×1
javascript ×1
jquery ×1
oauth ×1
orm ×1
python-2.7 ×1
python-2.x ×1
redis ×1
rest ×1
smtp ×1
smtpd ×1
twitter ×1
twython ×1