[英]Page not found 404 Django media files
我可以將文件上傳到我在settings.py
中settings.py
媒體文件夾( '/peaceroot/www/media/'
),如下所示
MEDIA_ROOT = '/peaceroot/www/media/'
MEDIA_URL = '/media/'
但是通過管理員我試圖訪問上傳的圖像文件
http://localhost:8000/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg
然后我收到 404 錯誤。
該文件存在於peaceroot/www/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg
在您的項目 urlpatterns 中添加媒體 url 條目:
from django.conf.urls.static import static
from django.conf import settings
...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
MEDIA_ROOT 的更好方法是,
當您轉移項目時,嘗試使媒體路徑動態化會很容易。
設置.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
MEDIA_URL = '/media/'
網址.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
看看這個
補充一點:如果其他答案對您不起作用,請嘗試將靜態 url 放在其他答案之前。 像這樣:
urlpatterns = static(...) + [...]
可能發生的情況是列表中的某些模式阻止請求到達靜態處理程序。 所以首先放置靜態處理程序可以解決這個問題。 為我工作。
在我的開發服務器中,我通過在 settings.py 中注釋掉這些行來修復它
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
在模板中通過錨標記創建鏈接並在最后添加 .url 到該文件對象,例如
{% for post in post %}
<a href="{{post.imagefilename.url}}" >
{% endfor %}
這是服務器錯誤。 我假設您正在使用 Nginx。 只需將其添加到您的 Nginx 配置文件(/etc/nginx/sites-available/example.com)中,就在位置 /static/ 下
location /media/ {
root /home/user/myprojectdir;
}
在這里, user應該是您創建的用戶名, myprojectdir應該是您的項目目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.