#django-rest-framework
#django-rest-framework
Вопрос:
Я использовал DRF REST для достижения функции загрузки файлов.
models.py
class NetworkConfig(models.Model):
ipaddress = models.GenericIPAddressField(verbose_name='Device IP')
configfile = models.FileField(max_length=300,upload_to='networkconfig/')
create_time = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name = 'NetworkConfig'
verbose_name_plural = verbose_name
db_table = 'NetworkConfig'
def __str__(self):
return self.ipaddress
serializers.py
class NetworkConfigSerializer(serializers.ModelSerializer):
create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
class Meta:
model = NetworkConfig
fields = '__all__'
settings.py
MEDIA_ROOT = '/tmp/'
views.py
class NetworkFilesViewSet(ViewSet):
parser_classes = (MultiPartParser, FormParser)
def upload(self,request):
file_serializer = NetworkConfigSerializer(data=request.data)
if file_serializer.is_valid():
file_serializer.save()
return Response(file_serializer.data, status=status.HTTP_201_CREATED)
return Response(file_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
urls.py
path(r'api/networkconfig', views.NetworkFilesViewSet.as_view({'post': 'upload'})),
Когда я использовал postman для загрузки файла, таблица MySQL выглядит следующим образом:
id | ipaddress | configfile | create_time
1 | 10.12.2.19 | networkconfig/test.txt | 2020-09-09 19:17:58.723851
и хранит файл в /tmp/networkconfig/.
Теперь, как я могу загрузить этот файл с помощью REST из FileField?
Комментарии:
1. просто добавьте другой
view
, который будет выполнять запрос get и вserializer
добавитьconfigfile
вfields
2. @Bahtiyarbekbergen Не могли бы вы объяснить это более подробно
3. просто верните экземпляр после операции создания со всеми полями, вот и все