簡體   English   中英

找不到頁面 404 Django 媒體文件

[英]Page not found 404 Django media files

我可以將文件上傳到我在settings.pysettings.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)

看看這個

https://docs.djangoproject.com/en/dev/howto/static-files/

補充一點:如果其他答案對您不起作用,請嘗試將靜態 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM