【问题标题】:Django Rest Framework: Page Not Found 404 Error while displaying an imageDjango Rest Framework:显示图像时找不到页面404错误
【发布时间】:2021-02-28 07:46:24
【问题描述】:

我正在尝试使用 django rest 框架在我的 api 中使用图像,但我仍然收到错误 404 Page not found。这是我的代码 -

Models.py

class SampleModel(models.Model):
    text = models.CharField(max_length=100, null=True, blank=True)
    image = models.ImageField(upload_to='images/', null=True, blank=True)

serializers.py

class SampleSerializer(serializers.ModelSerializer):
    image = serializers.ImageField(max_length=None, use_url=True)

    class Meta:
        model = SampleModel
        fields = ['text', 'image']

views.py

class SampleView(generics.ListAPIView, generics.CreateAPIView):
    queryset = SampleModel.objects.all()
    serializer_class = SampleSerializer

urls.py

urlpatterns = [path('sample/', SampleView.as_view(), name='sample')]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py

STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, "assets")
MEDIA_URL = '/assets/'

我尝试在谷歌上搜索解决方案并尝试了一些东西,但我仍然遇到同样的错误。 我尝试创建另一个项目并使用与上面相同的代码,但它仍然给我同样的错误。

【问题讨论】:

    标签: python django api django-models django-rest-framework


    【解决方案1】:

    删除您添加到序列化程序的图像字段。我认为这不是必需的,这可能会导致一些意想不到的事情,因为其余的代码看起来不错。

    【讨论】:

    • 我厌倦了这样做,但什么也没发生。它给了我同样的错误。过去 3 天我一直坚持这一点
    • 我尝试使用一个新项目并使用相同的代码。它重现了错误。
    • @Sarthak 我想我看到了一些东西。您附加的屏幕截图没有显示 ^assets/ 的任何 URL,Django 仅找到 admin/ api/vi/ 和 api/v2 的 URL。您在哪里添加了 urlpatterns 媒体 URL?它应该在主 urls.py 文件中
    • 我做了一些调试,发现你需要在项目的urls.py中添加静态函数,而不是在应用程序的urls.py中。我不知道为什么,但是当我这样做时它起作用了。
    猜你喜欢
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2018-09-12
    相关资源
    最近更新 更多