我已经成功地在 Appengine 上启动并运行了一个基本的 Django-nonrel 应用程序。模板正在正确呈现,但静态内容返回 404 响应。
使用“python manage.py runserver”启动的开发服务器中的静态内容没有问题。
这些是中的相关行static.py
:
STATIC_URL = '/static/'
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder', # Refers to PROJECT_DIR/static
'django.contrib.staticfiles.finders.AppDirectoriesFinder', # Appname/static
)
STATICFILES_DIRS = (os.path.join(PROJECT_DIR, 'static'),)
在相关模板中:
{% extends "base.html" %}
{% load staticfiles %}
{% block title %}Adding Objects{% endblock %}
{% block content %}
<p>Placeholder for Objects</p>
<img src="{% static "test_pattern.gif" %}">
<img src="{% static "sample_overlay.gif" %}">
{% endblock %}
myproject/static
这样,目录和目录中的静态文件myproject/myapp/static
就可以在开发服务器 ( python manage.py runserver
) 中成功提供。
这是我的app.yaml
:
application: appname
version: 1
runtime: python27
api_version: 1
threadsafe: yes
builtins:
- remote_api: on
inbound_services:
- warmup
libraries:
- name: django
version: latest
handlers:
- url: /_ah/queue/deferred
script: djangoappengine.deferred.handler.application
login: admin
- url: /_ah/stats/.*
script: djangoappengine.appstats.application
- url: /media/admin
static_dir: django/contrib/admin/media
expiration: '0'
- url: /.*
script: djangoappengine.main.application
任何线索如何解决这个问题?我不希望 Appengine Web 服务器处理静态文件,我想通过 Django 路由所有内容(至少现在是这样)。因此,在我的情况下,这样的解决方案实际上是不可接受的。
编辑:我可以很容易地解决这个问题,app.yaml
并从projectdir/static
.
- url: /static
static_dir: static
但是这个解决方案似乎很脏,我想把它全部留给 Django。