【问题标题】:how to upload an image from django rest framework using browse button?如何使用浏览按钮从 django rest 框架上传图像?
【发布时间】:2014-12-03 22:09:43
【问题描述】:

我是 django-rest-framework 的新手,我无法在我的 rest 框架中获取图像作为浏览按钮,我正在获取文本字段,这是我的代码如下...... .

views.py

from django.shortcuts import render
from serializers import *
 from rest_framework import viewsets

class newsViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = news.objects.all()
serializer_class = newsSerializer

class news_categoriesViewSet(viewsets.ModelViewSet):

queryset = news_categories.objects.all()
serializer_class = news_categoriesSerializer

models.py

from django.db import models
from django.utils.encoding import smart_unicode

class news_categories(models.Model):
cat_name = models.CharField(max_length=30, null=True)
created_at = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
    return smart_unicode(self.cat_name)

def Content_files(instance, filename):
return '/'.join(['Media','News Image', filename])

class news(models.Model):
name = models.CharField(max_length=30,null=True)
description = models.TextField()
cat_id = models.ForeignKey('news_categories')
image = models.FileField(upload_to=Content_files,null=True)
date = models.DateField()
created_at = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
   return smart_unicode(self.name)

序列化器.py

from django.forms import widgets
from rest_framework import serializers
from models import *

class newsSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
    model = news
    fields = ('url','id','name','description','cat_id','image','date')

class news_categoriesSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
    model = news_categories
    fields = ('url','id','cat_name')

任何人都可以帮助我吗?在此先感谢....

【问题讨论】:

  • 请问有谁能帮帮我吗?
  • 我知道了 django rest framework==2.4.4 是精确的 rest 框架的版本

标签: python-2.7 django-rest-framework


【解决方案1】:

settings.py和rest框架版本的问题,使用2.4.4

【讨论】:

    【解决方案2】:

    当我更新到 3.0 版时,我偶然发现了同样的问题。解决方案是使用样式属性在序列化程序中定义 FileField 或 ImageField:

    file = serializers.FileField(style = {'input_type': 'file'})

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 2018-08-17
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多