Url_for ile Flask statik dosyalarına bağlantı


91

url_forFlask'ta bir klasördeki bir dosyaya başvurmak için nasıl kullanılır ? Örneğin, staticklasörde bazıları gibi alt klasörlerde olabilen bazı statik dosyalarım var static/bootstrap.

Adresinden bir dosya sunmaya çalıştığımda static/bootstrapbir hata alıyorum.

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

Bununla alt klasörlerde olmayan dosyalara başvurabilirim ki bu işe yarıyor.

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

Statik dosyalara başvurmanın doğru yolu nedir url_for? url_forHerhangi bir düzeyde statik dosyalara url'ler oluşturmak için nasıl kullanırım ?

Yanıtlar:


182

Varsayılan olarak statik dosyalar için staticbitiş noktasına sahipsiniz . Ayrıca Flaskuygulama aşağıdaki bağımsız değişkenlere sahiptir:

static_url_path: web'deki statik dosyalar için farklı bir yol belirtmek için kullanılabilir. static_folderKlasörün adını varsayar.

static_folder: sunulması gereken statik dosyaların bulunduğu klasör static_url_path. Uygulamanın kök yolundaki 'statik' klasöre varsayılanlar.

Bu, filenamebağımsız değişkenin dosyanıza giden göreceli bir yol alacağı static_folderve aşağıdakilerle birlikte onu göreceli bir yola dönüştüğü anlamına gelir static_url_default:

url_for('static', filename='path/to/file')

dosya yolunu static_folder/path/to/fileurl yoluna dönüştürür static_url_default/path/to/file.

Yani static/bootstrapklasörden dosya almak istiyorsanız bu kodu kullanın:

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

Hangisine dönüştürülecek (varsayılan ayarlar kullanılarak):

<link rel="stylesheet" type="text/css" href="static/bootstrap/bootstrap.min.css">

Ayrıca url_forbelgelere bakın .


Not Flaskiçin bir URL kural ekler staticbir bu özelliklerini değiştirerek bu yüzden başlatma sırasında son nokta Flaskörneği değişmez url_for('static', ...)sonucu. Statik uç nokta sonrası başlatma işlemini değiştirmek için, şu ana bakın gist.github.com/brycepg/593ffb5ce9316d2871c7f24f9de34c24
Bryce Guinta

1

Benim durumumda nginx yapılandırma dosyasına özel talimatım vardı:

location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
            try_files $uri =404;
    }

Nginx Flask hakkında hiçbir şey bilmediği için tüm müşteriler '404' aldı.

Umarım birine yardımcı olur.


Birincil yapılandırma dosyası /etc/nginx/nginx.conf'tur (Linux'ta). Windows'ta benzer bir yol olabilir (gerçekten bilmiyorum)
Andrew Grow

Bu sunucu tarafı yapılandırmasıdır, eğer masaüstünüzde sadece bir uygulama geliştiriyorsanız, muhtemelen ona sahip değilsiniz / ihtiyacınız yok.
adamczi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.