渲染表单ViewSet Django Rest Framework

Bob*_*ujr 5 forms django rendering django-rest-framework

我要执行以下操作:

用我的模特

class User(models.Model):
   id = models.AutoField(primary_key=True)
   field1 = models.CharField(max_length=100)
   fk1 = models.ForeignKey(Group)
goes on
Run Code Online (Sandbox Code Playgroud)

之后,我创建了我的序列化器,如下所示:

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserSerializer
        fields = (...)

    ...
Run Code Online (Sandbox Code Playgroud)

最后,我创建我的ViewSet,它应如下所示:

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)

但是现在,我将如何创建一个viewSet并例如使用我的类生成一个表单?我的最终想法是能够执行以下操作:

def my_view(request):
   my_form = UserViewSet.as_view({'get': 'list'}(request))
   # from here either to be able to use .render().content
   # or, inside the template, render with {% render_form my_form %}
Run Code Online (Sandbox Code Playgroud)

这可能吗?谢谢

YPC*_*ble 2

你的建议是可能的,但通常没有意义。Django Rest Framework 非常适合创建 API,以便您可以向该 API 发送和接收信息(可能采用 JSON 格式)。

获取表单涉及从服务器获取呈现的 HTML。对于 Django 本身来说,这是一个更好的任务。您可以使用 aCreateView来做您想做的事情:

def UserCreateView(CreateView):
    model = User
    form_class = "name_of_your_form.html"  # Or you could call the form 'user_create_form.html` and leave this line out.
    fields = [...]
Run Code Online (Sandbox Code Playgroud)

然后,根据文档,您的表单将在您的模板中可用:

<form action="" method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save" />
</form>
Run Code Online (Sandbox Code Playgroud)