Petikan berikut adalah daripada buku yang saya tulis sebelum ini: Ia Django
Gunakan fail statik
Fail statik juga diperlukan dalam tapak web dinamik, seperti imej, css, fail js, dsb. yang digunakan oleh tapak web. Bagaimanakah kami mengurus dan menggunakan fail statik ini? Pertama, kami menambah dua folder mysite dan static di bawah lapisan atas assets Folder static ialah direktori yang digunakan untuk meletakkan fail statik semasa pembangunan Beberapa subdirektori boleh ditambah di bawah direktori ini untuk meletakkan fail yang berbeza. Jenis fail statik, seperti menetapkan img untuk meletakkan imej atau css untuk meletakkan fail css. Dan assets ialah direktori di mana fail statik diletakkan apabila tapak web sebenarnya dalam talian Sebab mengapa kedua-dua direktori ini dipisahkan adalah kerana kami perlu menyerahkan pengurusan fail statik kepada pelayan web apabila ia berada dalam talian.
Seterusnya, mari pergi ke settings.py untuk menyediakannya:
Sebanyak tiga parameter ditetapkan di sini Penerangan terperinci adalah seperti berikut:
Parameter
Penerangan
STATIC_URL
Corak URL bagi fail statik, di sini kami menetapkannya kepada /static/, kemudian laluan halaman web bermula dengan /static/ akan Dipertimbangkan sebagai fail statik, seperti: http://127.0.0.1/static/hello.png, http://127.0.0.1/static/hi.js, Tetapi jika ia http://127.0.0.1/restaurants/static/, ia akan sepadan dengan laluan dalam urls.py dan bukannya fail statik
STATICFILES_DIRS
Folder tempat fail statik diletakkan semasa pembangunan. Membenarkan menyediakan berbilang folder untuk menunjukkan lokasi fail statik. Seperti yang ditetapkan di atas, kita boleh menambah folder
di bawah folder yang ditunjukkan oleh BASE_DIR dan meletakkan fail imej, css dan js di dalamnya
STATIC_ROOT
Folder tempat fail statik diletakkan apabila pergi dalam talian. Dengan python manage.py collectstatic, Django akan menyalin fail statik yang ditemui di bawah STAIC_DIRS ke STATIC_ROOT. Kerana apabila DEBUG fail konfigurasi ditetapkan kepada False, Django tidak akan memproses pemulangan fail statik secara lalai Fail ini dikumpulkan ke dalam folder melalui arahan kepada memudahkan pengurusan dan pembacaan pelayan web
Selepas menetapkan parameter di atas, anda boleh menggunakan fail statik dalam folder STATICFILES_DIRS dalam templat. Katakan tapak web ingin menambah gambar logo.png (letak pada mysite/static/img/logo.png) pada halaman, kami akan menulis ini pada templat:
...
<img src='/static/img/logo.png'>
...
Anda sudah selesai. Tetapi jika suatu hari laluan halaman web fail statik terpaksa ditukar kepada /static_file/, anda perlu mencari laluan dan mengubah suai satu templat pada satu masa Tidakkah ini memenatkan? Perbandingan dengan "Django" adalah seperti berikut:
Sila ingat untuk memuatkan staticfiles dalam templat dahulu, kemudian gunakan teg {% static ...%}. Selepas pelarasan di atas, Django akan menukar {% static 'img/logo.png' %} kepada '/static/img/logo.png' apabila memproses fail statik, dan apabila anda perlu mengubah suai laluan fail statik, anda boleh mengubah suai settings.py dengan selamat dan berani dalam fail STATIC_URL. Tidak perlu risau tentang mengubah suai sejumlah besar templat.
Jika anda merujuk kepada URL yang sepadan dengan View, anda boleh membaca dokumen ini https://docs.djangoproject.com/en/1.9/intro/tutorial03/#removing-hardcoded-urls-in-templates
Jika anda merujuk kepada fail statik, seperti js, css, anda boleh mencapainya dengan menukar STATIC_URL dalam konfigurasi Django https://docs.djangoproject.com/en/ 1.9/howto /static-files/
.NET mempunyai urlrewrite keluar Kedengarannya mengelirukan Ringkasnya, tambah penapis sebelum output html Gantikan semua alamat pautan bermula dengan /
Petikan berikut adalah daripada buku yang saya tulis sebelum ini: Ia Django
Gunakan fail statik
Fail statik juga diperlukan dalam tapak web dinamik, seperti imej, css, fail js, dsb. yang digunakan oleh tapak web. Bagaimanakah kami mengurus dan menggunakan fail statik ini? Pertama, kami menambah dua folder
mysite
danstatic
di bawah lapisan atasassets
Folderstatic
ialah direktori yang digunakan untuk meletakkan fail statik semasa pembangunan Beberapa subdirektori boleh ditambah di bawah direktori ini untuk meletakkan fail yang berbeza. Jenis fail statik, seperti menetapkanimg
untuk meletakkan imej ataucss
untuk meletakkan fail css. Danassets
ialah direktori di mana fail statik diletakkan apabila tapak web sebenarnya dalam talian Sebab mengapa kedua-dua direktori ini dipisahkan adalah kerana kami perlu menyerahkan pengurusan fail statik kepada pelayan web apabila ia berada dalam talian.Seterusnya, mari pergi ke
settings.py
untuk menyediakannya:Sebanyak tiga parameter ditetapkan di sini Penerangan terperinci adalah seperti berikut:
/static/
, kemudian laluan halaman web bermula dengan/static/
akan Dipertimbangkan sebagai fail statik, seperti: http://127.0.0.1/static/hello.png, http://127.0.0.1/static/hi.js, Tetapi jika ia http://127.0.0.1/restaurants/static/, ia akan sepadan dengan laluan dalamurls.py
dan bukannya fail statik/static/
,那麼在網頁路徑中以/static/
開始的便會被視為靜態檔,如: http://127.0.0.1/static/hello.png 、 http://127.0.0.1/static/hi.js ,但如果是 http://127.0.0.1/restaurants/static/ 則會匹配urls.py
中的路徑,而非靜態檔BASE_DIR
所指示的資料夾底下新增一個static
資料夾,並把圖檔,css,js放在裡面python manage.py collectstatic
,Django 會將STAIC_DIRS
下發現的靜態檔複製至STATIC_ROOT
下。由於當設定檔的DEBUG
設為False
後,Django 預設便不會處理回傳靜態檔了,藉由指令將這些檔案集合到一個資料夾下,方便網頁伺服器管理及讀取BASE_DIR
dan meletakkan fail imej, css dan js di dalamnyapython manage.py collectstatic
, Django akan menyalin fail statik yang ditemui di bawahSTAIC_DIRS
keSTATIC_ROOT
. Kerana apabilaDEBUG
fail konfigurasi ditetapkan kepadaFalse
, Django tidak akan memproses pemulangan fail statik secara lalai Fail ini dikumpulkan ke dalam folder melalui arahan kepada memudahkan pengurusan dan pembacaan pelayan webSelepas menetapkan parameter di atas, anda boleh menggunakan fail statik dalam folder
STATICFILES_DIRS
dalam templat. Katakan tapak web ingin menambah gambarlogo.png
(letak padamysite/static/img/logo.png
) pada halaman, kami akan menulis ini pada templat:Anda sudah selesai. Tetapi jika suatu hari laluan halaman web fail statik terpaksa ditukar kepada
/static_file/
, anda perlu mencari laluan dan mengubah suai satu templat pada satu masa Tidakkah ini memenatkan? Perbandingan dengan "Django" adalah seperti berikut:Sila ingat untuk memuatkan
staticfiles
dalam templat dahulu, kemudian gunakan teg{% static ...%}
. Selepas pelarasan di atas, Django akan menukar{% static 'img/logo.png' %}
kepada'/static/img/logo.png'
apabila memproses fail statik, dan apabila anda perlu mengubah suai laluan fail statik, anda boleh mengubah suaisettings.py
dengan selamat dan berani dalam failSTATIC_URL
. Tidak perlu risau tentang mengubah suai sejumlah besar templat.Soalan yang saya jawab: Python-QA
Jika anda merujuk kepada URL yang sepadan dengan View, anda boleh membaca dokumen ini
https://docs.djangoproject.com/en/1.9/intro/tutorial03/#removing-hardcoded-urls-in-templates
Jika anda merujuk kepada fail statik, seperti js, css, anda boleh mencapainya dengan menukar STATIC_URL dalam konfigurasi Django
https://docs.djangoproject.com/en/ 1.9/howto /static-files/
.NET mempunyai urlrewrite keluar
Kedengarannya mengelirukan
Ringkasnya, tambah penapis sebelum output html
Gantikan semua alamat pautan bermula dengan /
Apache nampaknya boleh menggunakan fail .htaccess untuk menulis semula alamat yang diakses, peraturan biasa