0

基本的な 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 Web サーバーに静的ファイルを処理させたくありません。すべてを Django 経由でルーティングしたいと考えています (少なくとも今のところは)。したがって、私の場合、このような解決策は実際には受け入れられません。

編集:私はこれでこれを簡単に回避でき、app.yamlからすべての静的ファイルを提供しますprojectdir/static

- url: /static
  static_dir: static

しかし、この解決策は汚いようです。すべてDjangoに任せたいと思います。

4

1 に答える 1

0

app.yaml に /static マッピングを追加するのが正しい方法です。「汚い」ではありません。

また、app.yaml に django ライブラリを追加しています。それは正しくありません。Django-nonrel は Django の独自のブランチを使用するため、アプリでディレクトリとしてインポートする必要があります。app.yaml のライブラリに django 呼び出しを追加すると、2 つのバージョンの Django をインポートすることになり、奇妙なエラーが発生する可能性があります。app.yaml の Django ライブラリ呼び出しを削除し、nonrel に含まれている Django バージョンをインポートします。

于 2014-06-03T19:46:20.247 に答える