【发布时间】:2021-08-04 09:06:17
【问题描述】:
我正在尝试显示 django 数据库中的图像。在目录的数据库图像链接中也给出了正确的。但是当我打开该链接时,它会给出错误“TemplateDoesNotExist at /media/categories/abc.png” 甚至可以在该链接上找到图像。
Models.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']
Settings.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)
当我点击链接“http://localhost:8000/media/categories/feed.png”时,请在上传图片后查看我的 API API
它给了我一个错误页面。 Error
【问题讨论】:
-
您是否设置了正确的 URL 路由? docs.djangoproject.com/en/3.2/howto/static-files/…
-
是的,已经添加了
-
然后显示您的
urls.py。错误消息似乎有另一个路由捕获您的/media/请求。 -
先生,我已经添加了。请检查
标签: django django-models django-rest-framework django-views