Rumah > Soal Jawab > teks badan
用django写的程序,然后大概的问题是这样的.跟这个类似:
然后按照答案 改成 ./
的话,首页是可以访问的,但是内页,文章页就不行了.
网站的结构 :
默认生成的都是 /
的,我知道把所有的链接前面加一个 目录的名称 比如 /001/
也是可以访问的,但是感觉这样不够智能 而且也不够方便,求快捷的方法?
怪我咯2017-04-18 09:08:32
Petikan berikut adalah daripada buku yang saya tulis sebelum ini: Ia Django
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:
...
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOTS = os.path.join(BASE_DIR, 'assets')
...
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 dalam urls.py
dan bukannya fail statik參數 | 說明 |
---|---|
STATIC_URL | 靜態檔的URL pattern,這邊我們設為 /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 中的路徑,而非靜態檔 |
STATICFILES_DIRS | 開發時放置靜態檔的資料夾。允許設置多個資料夾來指示靜態檔的位置。如上面設定,我們可以在與BASE_DIR 所指示的資料夾底下新增一個 static 資料夾,並把圖檔,css,js放在裡面 |
STATIC_ROOT | 上線時放置靜態檔的資料夾。藉由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 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 webSelepas 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:
{% load staticfiles %}
...
<img src="{% static 'img/logo.png' %}">
...
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.
Soalan yang saya jawab: Python-QA
PHP中文网2017-04-18 09:08:32
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/
天蓬老师2017-04-18 09:08:32
.NET mempunyai urlrewrite keluar
Kedengarannya mengelirukan
Ringkasnya, tambah penapis sebelum output html
Gantikan semua alamat pautan bermula dengan /
黄舟2017-04-18 09:08:32
Apache nampaknya boleh menggunakan fail .htaccess untuk menulis semula alamat yang diakses, peraturan biasa