我无法为上传的图像设置根文件夹。上传图片位于名为api的django应用程序中。
该视图在图片上返回此链接: http://www.example.com/media/4a273bdf-564d-4dec-b657-43db27f04042.jpeg
然而,当我继续该链接时,我收到错误,因为图像不在那里。
我在settings.py中设置:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAdminUser',
],
'PAGE_SIZE': 1
}
MEDIA_ROOT = os.path.join(BASE_DIR,STATIC_ROOT,'media')
MEDIA_URL = '/media/'
我在api / models.py中写道:
from django.db import models
import uuid
def scramble_uploaded_filename(instance, filename):
extension = filename.split(".")[-1]
return "{}.{}".format(uuid.uuid4(), extension)
def filename(instance, filename):
return filename
# Create your models here.
class UploadImage(models.Model):
image = models.ImageField("Uploaded image",upload_to=scramble_uploaded_filename)
captcha_type = models.IntegerField("Image type")
views.py
from rest_framework import viewsets
from api.models import UploadImage
from api.serializers import UploadedImageSerializer
from rest_framework import authentication, permissions
from rest_framework.parsers import MultiPartParser,FormParser
import MySQLdb
class FileUploadViewSet(viewsets.ModelViewSet):
#create queryset view
permission_classes = (permissions.IsAuthenticated,)
queryset = UploadImage.objects.filter(id=1,user='auth.User')
serializer_class = UploadedImageSerializer
parser_classes = (MultiPartParser, FormParser,)
serializers.py
from rest_framework import serializers
from api.models import UploadImage # Import our UploadedImage model
class UploadedImageSerializer(serializers.ModelSerializer):
# current_user = serializers.HiddenField(default=serializers.CurrentUserDefault())
class Meta:
model = UploadImage
fields = ('id', 'image','captcha_type','created','user','result') #
任何想法?
答案 0 :(得分:3)
你好m8所有你要做的就是编辑urls.py添加这一行,它应该可以工作。
var myApp = angular.module('myApp',[]);
myApp.controller('myController',function($scope){
console.log("My controller");
$scope.newuser = {};
$scope.users = [
{username:"Satya",fullname:"Satya",email:"satya@gmail.com"}
];
$scope.saveuser = function(){
$scope.users.push($scope.newuser);
$scope.newuser = {};
};
});
答案 1 :(得分:1)
假设(根据您在OP下方的评论)您尝试将其部署到远程服务器:
要检查的第一件事是您上传的图片实际上存在于路径[project root]/media/4a273bdf-564d-4dec-b657-43db27f04042.jpeg
。
要检查的第二件事是Nginx或Apache或[插入Web服务器]正确地将请求路由到您的media
目录到服务器上的正确位置。
编辑#1
这是Nginx配置文件的示例位置块,用于将请求从网址www.example.com/media/filename_of_image.jpeg
路由到/absolute/path/to/media/
:
location /media/ {
alias /absolute/path/to/media/;
}
这应放在server
块中,位于定义路径location
的{{1}}块之前。