Django 模型表单包含在另一个模板中时不会呈现

问题描述 投票:0回答:1

我对 Django 还很陌生,正在尝试了解文档和基础知识。我的症结在于,我无法将页面 X 上的工作模型包含在另一个模板 Y 中。这是一个源自 django 文档的非常简单的示例。我查看了许多其他 SO 帖子,并尝试了明显的修复但无济于事。 (他们确实解决了更大的问题,但我留下了这个)

我最终计划将模型形式嵌入到模态中,但在现阶段甚至无法将它们渲染到其他 html 中,如果有一些帮助,我们将不胜感激。

SqLite 上的 Python 3.12、Django 4.2.7

型号:

class Title(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)

    def __str__(self):
        return self.title

形式:

class TitleForm(ModelForm):
    class Meta:
        model = Title
        fields = '__all__'

查看标题模型(作品):

def add_title(request):
    if request.method == 'POST':
        form = TitleForm()
        context = {'form': form}
        print(request.POST) # to see if the form works
        return render(request, 'add_title.html', context)
    else:
        form = TitleForm()
        return render(request, 'add_title.html', {'form': form})

这是add_title.html文件:

{% block content %}
<h1>Test Form</h1>
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Submit</button>
</form>
{% endblock %}

模型表单正在页面 127.0.0.1/add_title.html 上运行:

我希望将此表单嵌入到 127.0.0.1/page1 中。如果我能做到这一点,我应该能够最终将表单包含在模态或其他任何内容中。 这是page1.html

{% extends 'base.html' %}
{% block content %}
{% include "include.html" %} # a test of just pure html, renders fine
{% include "add_title.html" %} # this only renders the submit button
{% endblock %}

查看第1页:

def page1(request):
    return render(request, 'page1.html')

页面渲染时,通过include渲染另一个纯html文件,并渲染add_title.html中的html,但不渲染两个表单字段。

谢谢!

django django-forms
1个回答
0
投票

好吧,您没有将

form
传递给上下文,因此它无法渲染它。因此,您需要将其包含在第二页的上下文中:

def page1(request):
    return render(request, 'page1.html', {'form': TitleForm()})
© www.soinside.com 2019 - 2024. All rights reserved.