亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在部署中打開圖像的 URL 時頁面返回“未找到”,但在本地機器上工作。

在部署中打開圖像的 URL 時頁面返回“未找到”,但在本地機器上工作。

慕無忌1623718 2023-03-01 16:53:18
我的 Django REST API 應該能夠獲取和發布圖像。在開發過程中,我能夠將圖像保存到數據庫中,并通過圖像的 URL 檢索保存的圖像。但是,當部署到 Heroku 時,當我單擊圖像的 URL 時,頁面返回“未找到”。要求.txtasgiref==3.2.10dj-database-url==0.5.0Django==3.0.8django-heroku==0.3.1djangorestframework==3.11.0gunicorn==20.0.4Pillow==7.2.0psycopg2==2.8.5pytz==2020.1sqlparse==0.3.1whitenoise==5.1.0settings.pySTATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')STATIC_URL = '/static/'MEDIA_ROOT = os.path.join(BASE_DIR, 'media')MEDIA_URL = '/media/'django_heroku.settings(locals())urls.pyfrom django.contrib import adminfrom django.urls import path, includefrom django.conf.urls.static import staticfrom django.conf import settingsurlpatterns = [    path('admin/', admin.site.urls),    path('api/', include('element.urls')),]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)models.py(元素應用程序)from django.db import models# Create your models here.class Element(models.Model):    element_name = models.CharField(max_length=255, unique=True)    element_tag = models.CharField(max_length=255)    element_type = models.CharField(max_length=255)    element_img = models.ImageField(upload_to='elements/')    creator_tag = models.CharField(max_length=255)    creator_link = models.CharField(max_length=255)    def __str__(self):        return self.element_nameserializers.py(元素應用程序)from rest_framework import serializersfrom element import modelsclass ElementSerializer(serializers.ModelSerializer):    element_img = serializers.ImageField(max_length=None, use_url=True)    class Meta:        model = models.Element        fields = ('id', 'element_name', 'element_tag', 'element_type', 'element_img', 'creator_tag', 'creator_link')注意:圖像及其數據已保存,可以在管理面板中看到。但是,當打開圖像的 URL 時,它返回“未找到”。靜態文件和媒體文件夾都被推送到 GitHub 存儲庫中在我的本地機器上查看時,如果我打開 127.0.0.1:8000/media/elements/picture.png 的 URL,它會返回圖像。部署后,當我打開 project_name.herokuapp.com/media/elements/picture.png 的 URL 時,它返回“未找到”
查看完整描述

1 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

問題在于提供您的媒體文件。

Django 不是為在生產中提供靜態和媒體文件而構建

由于您使用 Heroku 作為托管平臺,whitenoise因此能夠處理您的靜態文件。但是,對于媒體文件,解決該問題的一個簡單方法是設置一個免費的 Amazon S3 帳戶來托管您的所有媒體文件。

這是一個快速參考指南在生產中提供 Django 媒體文件


查看完整回答
反對 回復 2023-03-01
  • 1 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號