从AWS上获取Django的图像到Android Glide。 404错误

时间:2016-09-13 06:50:44

标签: android django amazon-web-services

我使用部署了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应用程序也没有显示任何图像。

我该如何解决这个问题?

1 个答案:

答案 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_-_Front‌​cover_-simplemp3s.jp‌​g

仔细检查您的文件夹结构。您可能必须更新数据库中的文件路径。