我使用Python 2.7和Django 1.3运行GoogleAppEngine(GAE)1.6.3:
libraries:
- name: django
version: "1.3"
在我的app.yaml
中。以下内容应该在网址/static/admin
上提供管理媒体文件:
- url: /static/admin
static_dir: django/contrib/admin/media
expiration: '0'
但我为这样的管理媒体(css等)获得了404s。我是否使用Django管理员媒体文件的正确位置?
答案 0 :(得分:3)
执行此操作的最佳方法是将media
目录复制或符号链接到本地文件的app目录中,以便随应用程序的文件一起上传。然后您的app.yaml
可以引用app目录中的相对路径。
您可以在$PYTHON_LIB
路径中使用app.yaml
变量替换,但看起来Django不在Python 2.7运行时的实时版本中$PYTHON_LIB
下。
答案 1 :(得分:1)
将此内容添加到app.yaml
handlers:
- url: /static/admin
static_dir: static/admin
expiration: '0'
我能够通过以下方式提供CSS文件:
将此添加到settings.py
:
BASE_DIR = os.path.abspath(os.path.dirname(__file__)) + os.sep
STATIC_ROOT = BASE_DIR + 'static'
然后运行
python manage.py collectstatic
管理媒体文件在本地以及appspot.com上正确显示。
last命令将媒体文件复制到static/
目录中。所以事实上Dan Sanderson建议的是以更自动化的方式。
答案 2 :(得分:1)
我试过Philipp Keller的collectstatic
,但我没有这个命令。
因此,将此处理程序添加到app.yaml
:
- url: /static/admin
static_dir: django/contrib/admin/static/admin
expiration: '0'
然后,在settings.py
中,删除ADMIN_MEDIA_PREFIX
(在django 1.4中删除)并添加:
STATIC_URL = '/static/'
你有工作css。
答案 3 :(得分:0)
是可能由部署变量$ PYTHON_LIB引用的静态文件??
文件app.yaml
application: hello
version: 1
runtime: python27
api_version: 1
threadsafe: true
libraries:
- name: django
version: "1.3"
handlers:
- url: /admin/media
static_dir: $PYTHON_LIB/lib/django_1_3/django/contrib/admin/media
builtins:
- django_wsgi: on
log local:
INFO 2012-04-03 02:06:19,200 dev_appserver.py:2884]“GET /admin/media/css/base.css HTTP / 1.1”200 -
INFO 2012-04-03 02:06:19,207 dev_appserver.py:2884]“GET /admin/media/css/dashboard.css HTTP / 1.1”200 -
INFO 2012-04-03 02:06:19,242 dev_appserver.py:2884]“GET /admin/media/img/admin/default-bg.gif HTTP / 1.1”200 -
日志错误部署应用
2012-04-02 19:17:32.775/admin/media/css/dashboard.css 404 6ms 0kb
找不到处理程序引用的静态文件:$ PYTHON_LIB / lib / django_1_3 / django / contrib / admin / media / css / dashboard.css
答案 4 :(得分:0)
以下似乎对我有用。
<强>的app.yaml 强>
<script>
<?php
while($rowss = mysql_fetch_array($result2, MYSQL_ASSOC)){
?>
var str = <?php echo $rowss["ingredient"];?>;
var str_array = str.split(',');
for(var i = 0; i < str_array.length; i++) {
// Trim the excess whitespace.
str_array[i] = str_array[i].replace(/^\s*/, "").replace(/\s*$/, "");
// Add additional code here, such as:
var opt = document.createElement('option');
opt.innerHTML = str_array[i];
opt.value = str_array[i];
sel.appendChild(opt);
}
}
</script>
设置强>
handlers:
- url: /static
static_dir: staticfiles
运行STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
。现在,在您的staticfiles管理文件夹下,应该创建。