Python Django Rest框架序列化程序单独呈现表单
我知道如何整体呈现序列化程序的形式,但不知道如何单独呈现类似于django表单的模板,如Python Django Rest框架序列化程序单独呈现表单,python,django,django-rest-framework,Python,Django,Django Rest Framework,我知道如何整体呈现序列化程序的形式,但不知道如何单独呈现类似于django表单的模板,如 {{ form.name }} {{ form.name.errors }} 我当前的文件和代码如下: 型号.py # Create your models here. from django.db import models from pygments.lexers import get_all_lexers from pygments.styles import get_all_styles LEX
{{ form.name }}
{{ form.name.errors }}
我当前的文件和代码如下:
型号.py
# Create your models here.
from django.db import models
from pygments.lexers import get_all_lexers
from pygments.styles import get_all_styles
LEXERS = [item for item in get_all_lexers() if item[1]]
LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS])
STYLE_CHOICES = sorted((item, item) for item in get_all_styles())
class Snippet(models.Model):
created = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=100, blank=True, default='')
code = models.TextField()
linenos = models.BooleanField(default=False)
language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100)
style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100)
class Meta:
ordering = ('created',)
from rest_framework import serializers
from snippets.models import Snippet, LANGUAGE_CHOICES, STYLE_CHOICES
class SnippetSerializer(serializers.ModelSerializer):
class Meta:
model = Snippet
fields = ('id', 'title', 'code', 'linenos', 'language', 'style')
序列化程序.py
# Create your models here.
from django.db import models
from pygments.lexers import get_all_lexers
from pygments.styles import get_all_styles
LEXERS = [item for item in get_all_lexers() if item[1]]
LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS])
STYLE_CHOICES = sorted((item, item) for item in get_all_styles())
class Snippet(models.Model):
created = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=100, blank=True, default='')
code = models.TextField()
linenos = models.BooleanField(default=False)
language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100)
style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100)
class Meta:
ordering = ('created',)
from rest_framework import serializers
from snippets.models import Snippet, LANGUAGE_CHOICES, STYLE_CHOICES
class SnippetSerializer(serializers.ModelSerializer):
class Meta:
model = Snippet
fields = ('id', 'title', 'code', 'linenos', 'language', 'style')
form.html
{% extends 'main/base.html' %}
{% load rest_framework %}
{% block content %}
<div class="container">
<form method="POST" id="id-login-form" class="panel-body">
{% csrf_token %}
{% render_form serializer %}
<!-- {% render_form serializer template_pack='rest_framework/horizontal' %}
{% render_form serializer template_pack='rest_framework/vertical' %} -->
<!-- {{ serializer }} -->
<input type="submit" value="Save">
</form>
</div>
{% endblock %}
{%extends'main/base.html%}
{%load rest_framework%}
{%block content%}
{%csrf_令牌%}
{%render_form serializer%}
{%endblock%}
DRF除了名为{%render\u form%}
的{%render\u field%}
之外,还提供了另一个模板标记,该标记实际上用于呈现所有字段
因此,您的views.py看起来像这样(您需要在响应中发送此样式dict):
然后在模板中,您可以执行以下操作:
{% render_field serializer.title style=style %}
{% render_field serializer.code style=style %}
了解发生了什么的最好方法是查看源代码本身:
这就叫