我使用部署了AWS-ec2的Django-rest-framework实现了REST API。
settings.py
MEDIA_URL = '/images/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'images')
serializers.py
class PostSerializer(serializers.ModelSerializer):
author = serializers.ReadOnlyField(source='author.username')
class Meta:
model = Post
fields = ('author', 'text', 'image')
def create(self, validated_data):
validated_data['author'] = self.context['request'].user
return super(PostSerializer, self).create(validated_data)
urls.py
router = SimpleRouter()
router.register(r'posts', views.PostViewSet, base_name='posts')
urlpatterns = router.urls
urlpatterns = [
url(r'^', include(router.urls)),
]
views.py
class PostViewSet(viewsets.ModelViewSet):
serializer_class = PostSerializer
permission_classes = [IsAuthenticated]
queryset = Post.objects.all()
所以,它返回了:
{
"author": "ghdalsrn",
"text": "11",
"image": "http://ec2-52-78-138-143.ap-northeast-2.compute.amazonaws.com:8000/images/images/Avril_Lavigne_-_00_-_Sk8er_Girl_-_Frontcover_-simplemp3s.jpg"
}
我在Android工作室使用了"image": "http://ec2-52-78-138-143.ap-northeast-2.compute.amazonaws.com:8000/images/images/Avril_Lavigne_-_00_-_Sk8er_Girl_-_Frontcover_-simplemp3s.jpg"
。
Android MainActivity.java
public class MainActivity extends AppCompatActivity {
public ImageView mimage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mimage = (ImageView) findViewById(R.id.iv_image);
Glide.with(this)
.load("http://ec2-52-78-138-143.ap-northeast-2.compute.amazonaws.com:8000/images/images/Avril_Lavigne_-_00_-_Sk8er_Girl_-_Frontcover_-simplemp3s.jpg")
.centerCrop()
.into(mimage);
但是,根据我的腻子消息,
腻子
"GET /images/images/filename_sk8er_Girl.jpg HTTP/1.1" 404 5184
我的Android应用程序也没有显示任何图像。
我该如何解决这个问题?
答案 0 :(得分:1)
您服务器中的文件夹结构错误。根据{{3}},您应该将静态文件放在如下结构中:
[home folder where manage.py is located]/[module_name]/[images, defined in settings.py]/[module_name]/[image_file_name]
在你的情况下:
New/MyModule/images/MyModule/Avril_Lavigne_-_00_-_Sk8er_Girl_-_Frontcover_-simplemp3s.jpg
仔细检查您的文件夹结构。您可能必须更新数据库中的文件路径。