我的 Django REST API 应该能够获取和发布图像。在开发过程中,我能够将图像保存到数据库中,并通过图像的 URL 检索保存的图像。但是,当部署到 Heroku 时,当我单击图像的 URL 时,页面返回“未找到”。
要求.txt
asgiref==3.2.10
dj-database-url==0.5.0
Django==3.0.8
django-heroku==0.3.1
djangorestframework==3.11.0
gunicorn==20.0.4
Pillow==7.2.0
psycopg2==2.8.5
pytz==2020.1
sqlparse==0.3.1
whitenoise==5.1.0
settings.py
STATIC_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.py
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
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_name
serializers.py(元素应用程序)
from rest_framework import serializers
from element import models
class 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 时,它返回“未找到”
浮云间
相关分类