Я пытаюсь загрузить файл (любой файл) в мою структуру отдыха.
В настоящее время я могу загрузить файл, но по какой-то причине не могу нажать на сгенерированную ссылку. .
Это мои settings.py :
...
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
STATICFILES_DIRS = [os.path.join(BASE_DIR, "site_static")]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = '/static/'
Это мои model.py :
...
class FileUpload(models.Model):
created = models.DateTimeField(auto_now_add=True)
user_profile = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
datafile = models.FileField(blank=False, null=False)
Это мой views.py :
...
class FileUploadViewSet(viewsets.ModelViewSet):
"""Handles uploading a file"""
authentication_classes = (TokenAuthentication,)
serializer_class = (serializers.FileUploadSerializer)
queryset = models.FileUpload.objects.all()
parser_classes = (MultiPartParser, FormParser,)
permission_classes = (
permissions.UpdateOwnStatus,
IsAuthenticated
)
def perform_create(self, serializer):
"""Sets the user profile"""
serializer.save(user_profile=self.request.user,
datafile=self.request.data.get('datafile'))
Это мой serializer.py :
...
class FileUploadSerializer(serializers.HyperlinkedModelSerializer):
user_profile = serializers.SlugRelatedField(
read_only=True,
slug_field='id'
)
class Meta:
model = models.FileUpload
fields = ('id', 'user_profile', 'created', 'datafile')
extra_kwargs = {'user_profile': {'read_only': True},
'created': {'read_only': True}}
Это мой полный urls.py :
router = DefaultRouter()
router.register('hello-viewset', views.HelloViewSet, basename='hello-viewset')
router.register('profile', views.UserProfileViewSet)
router.register('feed', views.UserProfileFeedViewSet)
router.register('upload', views.FileUploadViewSet)
urlpatterns = [
path('hello-view/', views.HelloApiView.as_view()),
path('login/', views.UserLoginApiView.as_view()),
path('', include(router.urls)),
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Когда я загружаю файл, поле datafile заполняется местоположением файла, например:
{
"id": 2,
"user_profile": 4,
"created": "2020-04-27T21:08:16.269058Z",
"datafile": "http://127.0.0.1:8000/media/test.png"
},
Я смотрю на файлы проекта и могу найти файл в / media /, однако ссылка не работает.
Как заставить ссылку работать.