簡體   English   中英

服務靜態文件-Appengine中的Django-nonrel

[英]Serving Static files - Django-nonrel in Appengine

我已經成功建立了一個基本的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 %}

這樣,可以在開發服務器( python manage.py runserver )中成功提供myproject/static目錄和myproject/myapp/static目錄中的myproject/myapp/static文件。

這是我的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

但是這個解決方案似乎很骯臟,我想將其全部留給Django。

您在app.yaml中添加/ static映射是正確的方法。 這不是“骯臟”。

另外,您還要在app.yaml中添加django庫。 那是不對的。 Django-nonrel使用自己的Django分支,您應該將其作為應用程序的目錄導入。 將django調用添加到app.yaml中的庫意味着您要導入2個版本的Django,這可能會導致奇怪的錯誤。 刪除app.yaml中的Django庫調用,然后導入nonrel隨附的Django版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM