Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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中循环表单字段_Python_Django_Django Forms_Django Templates - Fatal编程技术网

Python 无法在django中循环表单字段

Python 无法在django中循环表单字段,python,django,django-forms,django-templates,Python,Django,Django Forms,Django Templates,在models.py中,我创建了一个名为“category”的字符类型字段。用户输入类别名称后,它会保存在数据库中,现在我想显示存储在数据库中的所有类别名称。我创建了四个类别名称。我可以在数据库中看到所有四个类别名称,但在UI中显示时,我看到的是类别名称,而不是任何名称。 views.py def add_cat(request): form = CatForm(request.POST or None) context = {"form":form} if form.

在models.py中,我创建了一个名为“category”的字符类型字段。用户输入类别名称后,它会保存在数据库中,现在我想显示存储在数据库中的所有类别名称。我创建了四个类别名称。我可以在数据库中看到所有四个类别名称,但在UI中显示时,我看到的是类别名称,而不是任何名称。
views.py

def add_cat(request):
    form = CatForm(request.POST or None)
    context = {"form":form}

    if form.is_valid():
        instance = form.save(commit=False)
        category = form.cleaned_data.get("category")
        instance.category = category
        instance.save()
        messages.add_message(request, messages.INFO, 'Category Added')
    return render(request,"add-cat.html",context)
forms.py

class CatForm(forms.ModelForm):
    class Meta:
        model = Add_cat
        fields = ['category']
我的模板文件

{% extends "admin-menu.html" %}
{% block content %}
{% load staticfiles %}
<head>
 <link rel="stylesheet" href="{% static 'style.css' %}">
</head>
<h2 style="text-align: center;">Add Category</h2>
    <form method="POST">
        {% csrf_token %}
        <table align="center">
            {{form.as_table}}
        </table>
        <input type="submit" value="Add" style="margin-left: 48%;"/>
        <input type="reset" value="Cancel"/>    
    </form>

    {% if messages %}
    <ul class="messages" style="list-style-type: none;">
        {% for message in messages %}
        <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
        {% endfor %}
    </ul>
    {% endif %}

    &nbsp
    <form id="id1">
    {% for field in form %}
        <table align="center">
            <tr><th>Category Name</th></tr>   
            <tr><td>{{field.value}}</td></tr>
        </table>
    {% endfor %}
    </form>
{% endblock %}
{%extends“admin menu.html”%}
{%block content%}
{%load staticfiles%}
添加类别
{%csrf_令牌%}
{{form.as_table}}
{%if消息%}
    {消息%中的消息为%s} {{message}} {%endfor%}
{%endif%}   {%形式的字段为%} 类别名称 {{field.value}} {%endfor%} {%endblock%}
像这样试试

def add_cat(request):
    form = CatForm(request.POST or None)
    catagories = <model>.objects.all()
    context = {"form":form, 'categories':categories}

    if form.is_valid():
        instance = form.save(commit=False)
        category = form.cleaned_data.get("category")
        instance.category = category
        instance.save()
        messages.add_message(request, messages.INFO, 'Category Added')
    return render(request,"add-cat.html",context)
def添加目录(请求):
form=CatForm(request.POST或None)
类别=.objects.all()
上下文={“形式”:形式,“类别”:类别}
如果form.is_有效():
instance=form.save(commit=False)
类别=form.cleaned\u data.get(“类别”)
instance.category=类别
save()实例
messages.add_消息(请求、messages.INFO、“添加类别”)
返回呈现(请求“add cat.html”,上下文)
在模板中

{% for category in categories %}
    <table align="center">
        <tr><th>Category Name</th></tr>   
        <tr><td>{{ category }}</td></tr>
    </table>
{% endfor %}
{%用于类别中的类别%}
类别名称
{{category}}
{%endfor%}

我不太明白你在这里干什么。使用
表单.as_table
显示表单一次,然后通过循环执行
字段.value
再次显示表单。但是字段没有值;如果要显示已保存在数据库中的内容,应该查询模型,而不是表单。首先,我创建了一个用于创建类别的输入框,然后在第二个表中,我尝试在浏览器中显示它,但得到的不是字段值,而是零。因为正如我所说,您需要查询模型,不再显示表单字段。它仅在请求方法为POST时显示类别(仅在我添加新项时),但当我仅在不同的菜单项(GET request)中导航时,我得到的是空表。在上下文类别=.objects.all()context.update({'categories':categories})后添加以下两行我也会更新答案