Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架序列化程序单独呈现表单_Python_Django_Django Rest Framework - Fatal编程技术网

Python Django Rest框架序列化程序单独呈现表单

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

我知道如何整体呈现序列化程序的形式,但不知道如何单独呈现类似于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

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 %}
了解发生了什么的最好方法是查看源代码本身:

这就叫