Sur*_*ten 2 python django django-models django-views django-rest-framework
我在返回的图片网址中遇到问题,这是不正确的.
我的返回图片网址是"http://127.0.0.1:8000/showimage/6/E%3A/workspace/tutorial_2/media/Capture1.PNG"
我需要的
"http://127.0.0.1:8000/media/Capture1.PNG"
Run Code Online (Sandbox Code Playgroud)
当我点击image_url然后在新的浏览器选项卡中打开图像但是当前显示的错误:
view.py
from showimage.models import ShowImage
from showimage.serializers import ShowImageSerializer
from rest_framework import generics
# Create your views here.
class ShowImageList(generics.ListCreateAPIView):
queryset = ShowImage.objects.all()
serializer_class = ShowImageSerializer
class ShowImageDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = ShowImage.objects.all()
serializer_class = ShowImageSerializer
Run Code Online (Sandbox Code Playgroud)
model.py
from __future__ import unicode_literals
from django.db import models
from django.conf import settings
# Create your models here.
class ShowImage(models.Model):
image_name = models.CharField(max_length=255)
image_url = models.ImageField(upload_to=settings.MEDIA)
Run Code Online (Sandbox Code Playgroud)
serializer.py
from rest_framework import serializers
from showimage.models import ShowImage
class ShowImageSerializer (serializers.ModelSerializer):
class Meta:
model = ShowImage
fields = ('id', 'image_name', 'image_url')
Run Code Online (Sandbox Code Playgroud)
settings.py
MEDIA=os.path.join(BASE_DIR, "media")
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^showimage/', include('showimage.urls')),
]
Run Code Online (Sandbox Code Playgroud)
我是python的新手,也是django-rest-framework的新手.还请告诉我如何扩展模型或序列化类
感谢先进的帮助..
您可能想在您的设置中尝试此操作:
MEDIA_URL = '/media/'
MEDIA_ROOT=os.path.join(BASE_DIR, "media")
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^showimage/', include('showimage.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
在你的模型中:
class ShowImage(models.Model):
image_name = models.CharField(max_length=255)
image_url = models.ImageField(upload_to="") # or upload_to="images", which would result in your images being at "http://127.0.0.1:8000/media/images/Capture1.PNG"
Run Code Online (Sandbox Code Playgroud)
最后,我在@Remi 的帮助下解决了这个障碍,谢谢@Remi 但是我做了一些其他的改变,以便我详细说明解决方案并解决这个问题。
设置.py
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT=os.path.join(BASE_DIR, "media")
Run Code Online (Sandbox Code Playgroud)
网址.py
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^showimage/', include('showimage.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |