Я успешно запустил базовое приложение Django-nonrel на Appengine. Шаблоны отображаются правильно, но статическое содержимое возвращает ответ 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 обрабатывал статические файлы, я хочу направлять все через Django (по крайней мере, сейчас). Следовательно, такое решение, как это не совсем приемлемо в моем случае.
РЕДАКТИРОВАТЬ: я могу легко обойти это с помощью этого в моем app.yaml
и обслуживать все статические файлы из projectdir/static
.
- url: /static
static_dir: static
Но это решение кажется грязным, я бы хотел оставить все это Джанго.