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)
这可能吗?谢谢
你的建议是可能的,但通常没有意义。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)
| 归档时间: |
|
| 查看次数: |
1906 次 |
| 最近记录: |