我使用带有Django Rest Framework的表单上传了一些包含一些信息的图像,它可以使用DRF默认模板显示,我想使用我自己的模板,这样我就可以添加更多按钮和链接。
当我看到它时,它是关于创建我的模板" api.html"在我的模板文件夹中的rest_framework文件夹中,但我不知道我可以在我想要创建的模板内容中添加什么。
我的观点:
class ImageViewSet(viewsets.ModelViewSet):
queryset = Video.objects.all()
serializer_class = ImageWatermarkSerializer
filter_backends = (filters.DjangoFilterBackend,filters.OrderingFilter,)
filter_fields = ('completed',)
ordering = ('-date_created',)
对于序列化程序:
class ImageWatermarkSerializer(serializers.ModelSerializer):
image = serializers.FileField(max_length=None,use_url=True)
class Meta:
model = Image
fields = ('id', 'image_name', 'image_desc', 'date_created', 'image', 'completed', 'size')
我的模特:
class Video(models.Model):
image_name = models.CharField(max_length=50)
image_desc = models.TextField(max_length=200)
completed = models.BooleanField(default=False)
date_created = models.DateTimeField(auto_now=True)
image = models.FileField(upload_to='imgs', default='/home/None/No-image.mp4')
size = models.IntegerField(default=10)
def __str__(self):
return "%s" % self.image_name
在我的urls.py中:
router = routers.DefaultRouter()
router.register(r'upl', views.ImageViewSet)
urlpatterns = [
url(r'^upload/', include(router.urls)), ]
答案 0 :(得分:1)
由于您已经创建了api.html文件,因此需要在api视图中定义template_name。
renderer_classes = [TemplateHTMLRenderer]
template_name = 'api.html'
在api.html
{% load rest_framework %}
<form class="form-horizontal" action="{% url 'upload' %}" method="post" novalidate enctype="multipart/form-data">
{% csrf_token %}
# this will include your serializer fields
{% render_form serializer %}
# Here you can customize your buttons
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Sign in</button>
</div>
</div>
</form>
如果您需要更改图像字段样式,DRF会为您提供样式属性
image = serializers.FileField(
style={'template': 'app/image.html'}
)
在docs
了解更多详情