Změna výchozí url na statickou média v baňce

hlasů
9

Udělal jsem si webové stránky pomocí baňky a nemám žádné problémy se věci správně pracovat na vestavěnou vývojový server. Také jsem byl schopen se dostat co běží na mém produkčním serveru pod mod_wgsi. Nicméně hostit jsem statické médium z / PHP-5,2 static / CGI aplikací a nemohu dostat Flask ‚vidět‘, aniž ručně měnit všechny adresy URL ve svých HTML soubory.

Problém se zdá být, že základní nastavení Baňka očekává statické soubory, které mají být v rámci aplikace lahve. Viz zde pro detaily. V podstatě si myslím, že je třeba změnit adresu URL ‚statické‘ části následujícího jedné vložky:

<link rel=stylesheet href={{url_for('static', filename='css/print.css')}} type=text/css media=print/> 

Vypadá to, že to může změnit v init .py, pokyny tady , ale definuje static_path takto nevypadá, že pracovat.

app = Flask(__name__, static_path = '/web_media')

Aby bylo jasno, když jsem ručně definovat svůj url takto:

<link rel=stylesheet href=/web_media/css/print.css type=text/css media=print/>

vše funguje. Pomoci by bylo velmi ocenil.

Položena 11/05/2011 v 15:26
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
4

Pokud se jedná o výrobní nastavení Baňka by neměla sloužit svůj statický obsah; webový server (Nginx, apache, cherokee, atd ...) je třeba manipulace je to jak chce, je účinnější při manipulaci s tyto druhy operací, než procesu python. Ze zvuků něj (na základě odkazu mod_wsgi), který používáte apache, takže to je to, jak byste mohli změnit svůj konfigurační soubor sloužit statického obsahu z static / CGI / PHP-5.2 s použitím apache.

Za předpokladu, že „web_media“ je adresář pod poněkud fiktivní /var/www/static/CGI/PHP-5.2 adresáři a obsahuje vaše css / js / etc. aktiva. Do konfiguračního souboru, v oblasti, kde jste nastavili tato aplikace přidat něco podél řad.

Alias /web_media/ /var/www/static/CGI/PHP-5.2/web_media/

<Directory /var/www/static/CGI/PHP-5.2/web_media>
  Order deny,allow
  Allow from all
</Directory>

Už je to nějaký čas, co jsem používal / nakonfigurován Apache, takže žádné záruky, že výše bude fungovat perfektně hned napoprvé. Ale hlavním bodem je, použijte webový server pro zpracování statických médií.

Odpovězeno 11/05/2011 v 17:43
zdroj uživatelem

hlasů
6

Přepsat static_foldermísto.

app = Flask(__name__, static_folder = '/web_media')
Odpovězeno 25/05/2013 v 14:51
zdroj uživatelem

hlasů
1

Pro produkční prostředí byste měli sloužit svým statické soubory přes HTTP serveru (např nginx / apache). Viz odpověď na Filipa Southam výše.

Nicméně, tam jsou časy, kdy používáte Werkzeug server (např dev / testování). V tomto případě existují 2 klíčové slovo argumenty se podívat na adrese:

  • static_folder: fyzické umístění na souborovém systému. Pokud je to relativní cesta, než je relativní k kořenového adresáře projektu.
  • static_url_path: Toto je URL vyhledávací cesta pro statický obsah.

Například, když mám statický soubor uložený na /path/to/static/files/myfile.jpg, s /path/to/static/filesstatické kořene souboru a chcete přistupovat pomocí http://example.com/mystatic/myfile.jpg. Udělám následující:

from flask import Flask

app_name = __name__
app = Flask(app_name, static_folder='/path/to/static/files', static_url_path='/mystatic')

Za předpokladu, že používáte baňky verze 0.7 nebo vyšší (v současné době 0.11.1)

Odpovězeno 26/10/2016 v 01:30
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more