django - 为什么图像没有由 django 提供服务?

标签 django django-models django-rest-framework django-views

我正在尝试显示 django 数据库中的图像。在目录的数据库图像链接中也给出了正确的。但是当我打开那个链接时,它给出了一个错误“TemplateDoesNotExist at/media/categories/abc.png”
在该链接中甚至可以使用图像。
模型.py

from django.db import models
def upload_path(instance,filename):
    return 'categories/{filename}'.format(filename=filename)

class Categories(models.Model):
    name = models.CharField(max_length=255, unique=True)
    description = models.CharField(max_length=500)
    image_url = models.ImageField(blank=True, null = True, upload_to= upload_path)
    REQUIRED_FIELDS = ['name','description','image_url']
设置.py
    STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'
CORS_ALLOW_ALL_ORIGINS = True
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'build/static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
urls.py

from django.urls import path, include, re_path
from django.views.generic import TemplateView
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('auth/', include('djoser.urls')),
    path('admin/', admin.site.urls),
    path('auth/', include('djoser.urls.jwt')),
    path('auth/', include('djoser.social.urls')),
    path('adminuser/', include('adminuser.urls')),
]

urlpatterns += [re_path(r'^.*', TemplateView.as_view(template_name='index.html'))]
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) 
Views.py
class CategoriesListCreateAPI(GenericAPIView, ListModelMixin , CreateModelMixin):
    queryset = Categories.objects.all()
    serializer_class = CategoriesSerializer
    permission_classes = (AllowAny,)

    def get(self, request , *args, **kwargs):
        return self.list(request, *args, **kwargs)

    def post(self, request , *args, **kwargs):
        return self.create(request, *args, **kwargs)

# Retrieve, update and delete (pk required)
class RUDCategoriesAPI(GenericAPIView, RetrieveModelMixin, UpdateModelMixin,  DestroyModelMixin):
    queryset = Categories.objects.all()
    serializer_class = CategoriesSerializer
    permission_classes = (AllowAny,)

    def get(self, request , *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)
    
    def put(self, request , *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def put(self, request , *args, **kwargs):
        return self.partial_update(request, *args, **kwargs)
    
    def delete(self, request , *args, **kwargs):
        return self.destroy(request, *args, **kwargs)
在这里请看我的 API API当我点击那个链接“http://localhost:8000/media/categories/feed.png”上传图片后
它给了我一个错误页面。
Error

最佳答案

你的网址有

urlpatterns += [re_path(r'^.*', TemplateView.as_view(template_name='index.html'))]
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) 
第一re_path捕获每个请求,因此永远不会到达静态 URL。翻转这些:
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) 
urlpatterns += [re_path(r'^.*', TemplateView.as_view(template_name='index.html'))]

关于django - 为什么图像没有由 django 提供服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68648456/

相关文章:

python - JSONField 对于 POST 序列化为 json,对于 GET 序列化为字符串

django - 带注释的 django 查询集在序列化期间被忽略

python - 谷歌应用引擎 + 谷歌云存储 + Sqlite3 + Django/Python

python - 从数据库模型中向登录用户显示他们自己的信息

python - 如何序列化 Django MPTT 系列并保持其层次结构?

django - 从 Django 中的现有数据库生成一些模型

python (Django) : 'self.text' is unsubscriptable

python - django-evolution 错误

python - 无法分配 "40": "Group.groupParent_id" must be a "Group" instance

python - 限制某些用户添加新标签,django-taggit?