Django 和 Web 開發的新手。但是我已經按照教程創建了我的第一個網站。一切正常,直到我完成它并想使用 Django 管理面板編輯資訊。
主要問題是我有一個如下所示的模型,它使用 FilePathField 來描述影像位置。該教程讓我將影像放在/home/pi/mysite/projects/static/img.
from django.db import models
class Project(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
technology = models.CharField(max_length=20)
image = models.FilePathField('/img')
def __str__(self):
return self.title #or self.title for blog posts
起初在網站上顯示影像時效果很好,但是一旦我嘗試/change/從管理面板導航到url,我就會得到FileNotFoundError at /admin/projects/project/1/change/ [Errno 2] No such file or directory: '/img'
所以我環顧四周,發現 FilePathField 是一個絕對路徑,所以嘗試用/home/pi/mysite/projects/static/img/. 這阻止了錯誤的發生,這讓我至少可以/change/從管理面板訪問url。面板現在顯示帶有下拉選單的影像欄位,我可以使用它在上面的不同影像之間進行選擇,這些影像位于/home/pi/mysite/projects/static/img/. 但是從管理面板,一旦我點擊保存,影像將不再顯示在網站上。在網站上使用檢查元素時,它似乎試圖從/static/projects/static/img. 然后我嘗試將影像移動到,/static/projects/static/img但它們不再顯示在管理面板的下拉框中,也沒有顯示在網站上。
所以在這一點上,我有點困惑我應該指向 FilePathField 的位置,這將允許我在網站上顯示影像并通過管理面板更改它們。
uj5u.com熱心網友回復:
更好的方法是FileField像這樣使用 django :
image = models.FileField(null=True, blank=True)
在您settings.py需要包含媒體路徑。檢查你的設定中有這個。
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
MEDIA_URL = '/media/'
最后一步是擴展 urls.py 中的 urlpatterns:
urlpatterns = [
# your paths
] static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
這將生成一個/media/目錄,您上傳的媒體檔案將指向該目錄。然后在您的前端,您可以簡單地使用模型屬性image.url來獲取影像的絕對 url。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/400921.html
標籤:Python 姜戈 静止的 django-admin
