2017-06-03 1 views
0

CSS- und Javascript sind nicht auf meiner Website arbeiten Ich bin mit Flask Rahmen auf PythonAnywhereCSS und JS funktioniert nicht auf Flask Rahmen

Verzeichnis sturcture:

home/dubspher/mysite/ 

- README.md 

- app.py 

- index.html 

Static/ 

- css 

- fonts 

- images 

- js 

- sass 

Originalversion von HTML:

<html> 
    <head> 
     <title>Dubspher.</title> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
     <meta name="description" content="" /> 
     <meta name="keywords" content="" /> 
     <!--[if lte IE 8]><script src="css/ie/html5shiv.js"></script><![endif]--> 
     <script src="js/jquery.min.js"></script> 
     <script src="js/jquery.dropotron.min.js"></script> 
     <script src="js/jquery.scrollgress.min.js"></script> 
     <script src="js/jquery.scrolly.min.js"></script> 
     <script src="js/jquery.slidertron.min.js"></script> 
     <script src="js/skel.min.js"></script> 
     <script src="js/skel-layers.min.js"></script> 
     <script src="js/init.js"></script> 
     <noscript> 
      <link rel="stylesheet" href="css/skel.css" /> 
      <link rel="stylesheet" href="css/style.css" /> 
      <link rel="stylesheet" href="css/style-xlarge.css" /> 
     </noscript> 
     <!--[if lte IE 9]><link rel="stylesheet" href="css/ie/v9.css" /><![endif]--> 
     <!--[if lte IE 8]><link rel="stylesheet" href="css/ie/v8.css" /><![endif]--> 
    </head> 

modifizierte Version aber nicht funktioniert:

<html> 
    <head> 
     <title>Dubspher.</title> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
     <meta name="description" content="" /> 
     <meta name="keywords" content="" /> 
     <noscript> 
      <link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet"> 
      <link href="{{ url_for('static', filename='css/skel.css') }}" rel="stylesheet"> 
      <link href="{{ url_for('static', filename='css/style-xlarge.css') }}" rel="stylesheet"> 
     </noscript> 
     <!--[if lte IE 9]><link rel="stylesheet" href="css/ie/v9.css" /><![endif]--> 
     <!--[if lte IE 8]><link rel="stylesheet" href="css/ie/v8.css" /><![endif]--> 
    </head> 
    <body class="landing"> 
      <!--[if lte IE 8]><script src="css/ie/html5shiv.js"></script><![endif]--> 
     <script type="text/javascript" src="{{ url_for('static', filename='js/jquery.min.js"') }}"></script> 
     <script type="text/javascript" src="{{ url_for('static', filename='js/jquery.dropotron.min.js"') }}"></script> 
     <script type="text/javascript" src="{{ url_for('static', filename='js/jquery.scrollgress.min.js"') }}"></script> 
     <script type="text/javascript" src="{{ url_for('static', filename='js/jquery.scrolly.min.js"') }}"></script> 
     <script type="text/javascript" src="{{ url_for('static', filename='js/jquery.slidertron.min.js"') }}"></script> 
     <script type="text/javascript" src="{{ url_for('static', filename='js/skel.min.js"') }}"></script> 
     <script type="text/javascript" src="{{ url_for('static', filename='js/skel-layers.min.js"') }}"></script> 
     <script type="text/javascript" src="{{ url_for('static', filename='js/init.js"') }}"></script> 

Wie Sie sehen können, habe ich JS wie vorgeschlagen aus einem anderen Beitrag verschoben! Und auch alle Stylesheet-Dateien in einen neuen Ordner namens static verschoben!

Ich löschte den Cache in meinem Browser, aber ich kann sehen, dass 404 Fehler im Inspektionsmodus.

http://dubspher.pythonanywhere.com

App.py

from flask import Flask 

# set the project root directory as the static folder, you can set others. 
app = Flask(__name__, static_folder='/home/dubspher/mysite/') 

@app.route('/') 
def static_file(): 
    return app.send_static_file('index.html') 

if __name__ == "__main__": 
    app.run() 
+0

Sie schreiben nicht Ihr Kolben-Skript, aber wenn Sie meinem Beispiel wurden folgende, Sie möchten nicht die Unterordner in Ihrem/home/dubspher statisch genannt/mysite-Verzeichnis Ihre CSS-Dateien sollten in/home/dubspher/mysite/css sein. Aber Sie müssen wirklich Ihr aktuelles Flask-Skript posten, um sicher zu gehen. Außerdem solltest du url_for nicht verwenden, wenn du mit dem von mir geposteten Beispiel arbeitest. Sie würden url_for verwenden, wenn Sie das verwenden würden, was der ursprüngliche Beitrag war. In meinem Beispiel ist url_for nicht notwendig. Ihre Quelle wäre einfach src = "/ static/js/jquery.js". – clockwatcher

+0

@clockwatcher Ich verschiebe Dateien mit dem Befehl mv in der Bash-Konsole. Wenn es kein Problem ist, behalte ich einfach den statischen Ordner und füge static im Pfad für Stylesheets hinzu. Ich habe url_for hinzugefügt, weil es für jemand anderen funktioniert! Ich schätze deine Hilfe sehr. Flask-Skript hinzugefügt! –

+0

Es ist besser, alle statischen Ressourcen in einem statischen Unterordner zu haben. Die Art und Weise, wie Sie es jetzt in Ihre Frage gelegt haben, ist besser gestaltet. Also bleib dabei. Sie müssen nur den Ordner index.html in den statischen Ordner verschieben und den Pfad zu Ihrem statischen Ordner aktualisieren. Technisch gesehen müssten Sie den Parameter static_folder überhaupt nicht mit der Art und Weise verwenden, wie Sie ihn angelegt haben. Als "./static" relativ zu app.py ist die Art, wie flask standardmäßig verwendet wird. Alles, was Sie tun müssen, ist Ihren static_url_path einzustellen. Aber ich will dich nicht verwirren. Gib die Antwort unten einen Versuch. – clockwatcher

Antwort

1

Mit den Dateien, wie Sie zur Zeit angelegt haben sie, Ihre Datei index.html in die Wurzel des statischen Unterordner verschieben.

home/dubspher/mysite/ 

- README.md 

- app.py 


Static/ 
- index.html 

- css 

- fonts 

- images 

- js 

- sass 

Und verwenden Sie die folgende app.py

from flask import Flask 

# set the project root directory as the static folder, you can set others. 
app = Flask(__name__, static_url_path="/static", static_folder='/home/dubspher/mysite/static') 

@app.route('/') 
def static_file(): 
    return app.send_static_file('index.html') 

if __name__ == "__main__": 
    app.run() 

Und Ihre index.html Links ändern:

<html> 
    <head> 
     <title>Dubspher.</title> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
     <meta name="description" content="" /> 
     <meta name="keywords" content="" /> 
     <!--[if lte IE 8]><script src="css/ie/html5shiv.js"></script><![endif]--> 
     <script src="/static/js/jquery.min.js"></script> 
     <script src="/static/js/jquery.dropotron.min.js"></script> 
     <script src="/static/js/jquery.scrollgress.min.js"></script> 
     <script src="/static/js/jquery.scrolly.min.js"></script> 
     <script src="/static/js/jquery.slidertron.min.js"></script> 
     <script src="/static/js/skel.min.js"></script> 
     <script src="/static/js/skel-layers.min.js"></script> 
     <script src="/static/js/init.js"></script> 
     <noscript> 
      <link rel="stylesheet" href="/static/css/skel.css" /> 
      <link rel="stylesheet" href="/static/css/style.css" /> 
      <link rel="stylesheet" href="/static/css/style-xlarge.css" /> 
     </noscript> 
     <!--[if lte IE 9]><link rel="stylesheet" href="/static/css/ie/v9.css" /><![endif]--> 
     <!--[if lte IE 8]><link rel="stylesheet" href="/static/css/ie/v8.css" /><![endif]--> 
    </head> 

Ihre Stylesheets in Ihrem Javascript verwiesen. Ändern Init.js so, dass es die richtigen Pfade verweist:

 global: { href: '/static/css/style.css', containers: 1400, grid: { gutters: ['2em', 0] } }, 
     xlarge: { media: '(max-width: 1680px)', href: '/static/css/style-xlarge.css', containers: 1200 }, 
     large: { media: '(max-width: 1280px)', href: '/static/css/style-large.css', containers: 960, grid: { gutters: ['1.5em', 0] }, viewport: { scalable: false } }, 
     medium: { media: '(max-width: 980px)', href: '/static/css/style-medium.css', containers: '90%', grid: { zoom: 2 } }, 
     small: { media: '(max-width: 736px)', href: '/static/css/style-small.css', containers: '90%!', grid: { gutters: ['1.25em', 0], zoom: 3 } }, 
     xsmall: { media: '(max-width: 480px)', href: '/static/css/style-xsmall.css' } 
+0

Wenn Static in Ihrem Dateisystem wirklich großgeschrieben wird, ändern Sie es in Kleinbuchstaben. Weil ich in allen Code-Referenzen Kleinbuchstaben habe. – clockwatcher

+0

Ich denke, JS funktioniert, aber CSS immer noch nicht gefunden (404) Sie schlagen vor, src = im Kommentar zu verwenden, aber in Ihrer Antwort haben Sie href = ist das korrekt? Der statische Ordner wird nicht groß geschrieben. Vielen Dank! –

+0

Wie Sie sehen können, kann ich die Dateien direkt über URL http: //dubspher.pythonanywhere zugreifen.com/statisch/css/style.css –

Verwandte Themen