#django #django-rest-framework #django-templates
Вопрос:
models.py
class Contents(models.Model):
name = models.CharField(max_length=100)
formula = models.CharField(max_length=20)
description = models.TextField(null=True, max_length=100)
wiki = models.CharField(null=True, max_length=100)
youtube = models.CharField(null=True, max_length=100)
file = models.FileField()
def __str__(self):
return self.name
view.py
class ContentsListCreateAPIView(APIView):
renderer_classes = [TemplateHTMLRenderer]
template_name = 'admin3.html'
style = {'template_pack': 'rest_framework/vertical/'}
def get(self, request):
queryset = Contents.objects.all()
serializer = ContentsSerializer
return Response({'serializer': serializer, 'contents': queryset, 'style': self.style})
def post(self, request):
queryset = Contents.objects.all()
serializer = ContentsSerializer(data=request.data)
print(serializer.is_valid())
print(serializer.data)
if serializer.is_valid():
serializer.save()
return redirect('contents_list')
return redirect('contents_list')
serializers.py
from rest_framework import serializers
from .models import Contents
class ContentsSerializer(serializers.ModelSerializer):
class Meta:
model = Contents
fields = '__all__'
admin.html
<form action="{% url 'contents_list' %}" method="POST">
{% csrf_token %}
{% render_form serializer %}
<input type="submit" value="Save">
Похоже, что поле файла не получает надлежащего ввода. Я не понимаю, в чем проблема. CreateAPIView хорошо работает, когда я использую шаблон DRF по умолчанию.
Комментарии:
1. Попробуйте добавить
enctype='multipart/form-data'
в свой<form>
тег в HTML2. да благословит вас Бог! это сразу же исправило проблему, большое вам спасибо