我是新手,在學習 YouTube 上django的教程時遇到了問題。請幫助我,以便我更改為動態的靜態頁面將加載我所做的更改。一切正常,除非我嘗試使用. 我還通過靜態檔案夾告訴系統有關靜態內容的資訊,但它沒有顯示我嘗試通過靜態檔案夾顯示的圖片。{% static %}{% load static %}
概括
- 圖片未顯示在網頁上。
- 檔案在靜態檔案夾中不可用。
uj5u.com熱心網友回復:
不確定您的問題到底是什么,但據我了解,您正在嘗試在django模板中使用靜態檔案夾中的影像。這可以通過正確配置 django 和使用模板標簽來實作。
開發中
為了使這個在開發服務器上作業,您需要static在每個應用程式的檔案夾中創建一個名為的檔案夾。例如,您的專案的檔案結構可能如下所示:
project
|_ project
|_ app
|_ static
|_ app
|_ image.png
|_ templates
|_ app
|_ home.html
|_ __init__.py
|_ admin.py
|_ models.py
|_ tests.py
|_ urls.py
|_ views.py
|_ db.sqlite3
|_ manage.py
然后,您只需在檔案開頭home.html添加并使用您想使用影像的任何位置,即可從模板訪問您的影像。請注意,此模板標記基本上為您提供了要顯示的靜態檔案的 url。所以,實際上,你應該像這樣插入影像:{% load static %}{% static "app/image.png" %}
<img src="{% static 'app/image.png' %}" />
生產中
在生產中,我們需要將來自不同應用程式的所有靜態檔案收集到一個共同的地方,以便服務器可以輕松找到它們。我們使用有用的djangoapp來做到這一點staticfiles,我們可以在settings.py檔案中配置它。
settings.py
確保您settings.py包含以下幾行
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
INSTALLED_APPS = [
...
'django.contrib.staticfiles',
...
]
STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
您可以替換'static/'為任何您想成為靜態網址的內容。您可以將'staticfiles'in替換STATIC_ROOT為您將收集靜態檔案的根檔案夾的名稱。此檔案夾必須(使用此配置)在專案的基本目錄中 - 與您擁有資料庫 ( db.sqlite3) 的檔案夾相同。例如:
project
|_ project
|_ app
|_ staticfiles
|_ db.sqlite3
|_ manage.py
當你運行時python3 manage.py collectstatic,你專案的每個應用程式的所有靜態檔案都將被復制到STATIC_ROOT目錄中,因此它們都可以從同一個地方獲得。您的檔案結構將如下所示:
project
|_ project
|_ app
|_ staticfiles
|_ app
|_ image.png
|_ db.sqlite3
|_ manage.py
最后,你必須告訴你的生產服務器staticfiles目錄在哪里,你就可以開始了(如何做到這一點取決于你使用的托管服務)。
希望這可以幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/509912.html
標籤:django网页服务django-rest-frameworkdjango-viewsdjango-模板
下一篇:Flutter將Map<String,dynamic>強制轉換為Future<Map<String,dynamic>>強制回傳錯誤
