Статические файлы не найдены Flask на Apache - PullRequest
0 голосов
/ 18 января 2019

У меня развернуто приложение Flask на Apache, и файлы JavaScript в папке static не найдены

enter image description here

Я не понимаю, что не так, вот файлы:

Apache conf :

<VirtualHost *:80>
    ServerName japanesepractice.local
    ServerAlias www.japanesepractice.local

    WSGIDaemonProcess japanesepractice user=leonardo group=leonardo threads=5
    WSGIScriptAlias / /var/www/japanesepractice.local/japanese.wsgi
    <Directory /var/www/japanesepractice.local>
        WSGIProcessGroup japanesepractice
        WSGIApplicationGroup %{GLOBAL}
        Order allow,deny
        Allow from all
    </Directory>

    Alias /static/ /var/www/japanesepractice.local/static
    <Directory /var/www/japanesepractice.local/static>
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

app.py

# -*- coding: utf-8 -*-
from flask import Flask
from flask import render_template
from flask import request

from service import kanjiservice

app = Flask(__name__)


@app.route('/')
def homepage():
    return render_template('index.html')

файл wsgi :

#!/usr/bin/python2

activate_this = '/var/www/japanesepractice.local/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

import sys
sys.path.insert(0, '/var/www/japanesepractice.local')

from app import app as application

шаблон

<script src="{{ url_for('static', filename='js/responsivevoice.js') }}"></script>
<script src="{{ url_for('static', filename='js/speaking.js') }}"></script>

Может ли кто-нибудь помочь?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вы должны использовать Alias для своих /static/ маршрутов, только если вы не хотите, чтобы Apache использовал ваш WSGIScriptAlias для обработки совпадающих запросов. Это хорошо для производительности, так как запросы на статические файлы не должны задействовать приложение WSGI (кроме создания URL), но это может быть связано с вашими проблемами.

Вы можете устранить неполадки, удалив:

Alias /static/ /var/www/japanesepractice.local/static
<Directory /var/www/japanesepractice.local/static>
    Order allow,deny
    Allow from all
</Directory>

Если удалить это работает, попробуйте повторно добавить его с сбалансированными косыми чертами (/static/ как /static, чтобы соответствовать отсутствующему слешу /var/www/japanesepractice.local/static.

0 голосов
/ 18 января 2019

Попробуйте добавить type="text/javascript"

как показано ниже:

`<script type="text/javascript" src="{{  url_for('static', filename='js/responsivevoice.js') }}"> . 
</script>` 
...