首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我将Django模型表单包含在父模板中时,该表单不显示

当你在Django中将模型表单包含在父模板中时,如果表单不显示,可能是由于以下几个原因:

基础概念

在Django中,模板继承允许你创建一个基础模板(父模板),其他模板可以继承这个基础模板并添加或覆盖特定部分。模型表单是一个基于Django模型的表单类,它可以自动为你创建表单字段。

可能的原因及解决方法

  1. 模板继承问题
    • 原因:可能是在父模板中没有正确地定义block,或者在子模板中没有正确地覆盖这些block
    • 解决方法:确保父模板中定义了用于插入表单的block,并且在子模板中正确地覆盖了这个block
    • 解决方法:确保父模板中定义了用于插入表单的block,并且在子模板中正确地覆盖了这个block
    • 解决方法:确保父模板中定义了用于插入表单的block,并且在子模板中正确地覆盖了这个block
  • 视图问题
    • 原因:视图可能没有正确地将表单实例传递给模板。
    • 解决方法:确保在视图中创建了表单实例,并将其作为上下文变量传递给模板。
    • 解决方法:确保在视图中创建了表单实例,并将其作为上下文变量传递给模板。
  • 表单类问题
    • 原因:表单类可能没有正确定义或导入。
    • 解决方法:确保表单类正确地定义在forms.py文件中,并且在视图中正确导入。
    • 解决方法:确保表单类正确地定义在forms.py文件中,并且在视图中正确导入。
  • CSRF令牌问题
    • 原因:如果没有包含{% csrf_token %},Django的安全机制会阻止表单提交。
    • 解决方法:确保在表单中包含了{% csrf_token %}

示例代码

假设你有一个简单的模型MyModel和一个对应的表单MyModelForm

代码语言:txt
复制
# models.py
from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()

# forms.py
from django import forms
from .models import MyModel

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'

在视图中:

代码语言:txt
复制
# views.py
from django.shortcuts import render
from .forms import MyModelForm

def my_view(request):
    if request.method == 'POST':
        form = MyModelForm(request.POST)
        if form.is_valid():
            form.save()
    else:
        form = MyModelForm()
    return render(request, 'form_page.html', {'form': form})

在模板中:

代码语言:txt
复制
<!-- base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}My Site{% endblock %}</title>
</head>
<body>
    {% block content %}{% endblock %}
</body>
</html>

<!-- form_page.html -->
{% extends "base.html" %}
{% block content %}
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Submit</button>
    </form>
{% endblock %}

通过以上步骤,你应该能够解决Django模型表单在父模板中不显示的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django中ModelForm多表单组合的解决方案

#GET显示表单时,如果要显示初始值,请用initial参数           self.initial = initial or {}          #模板中显示{{form}}时,默认是以...所以,基本表单的功能看BaseForm已经足够了。 2、从模型创建表单 django对于MVC中的C与M间的映射是非常体贴的,集中体现中Model模型中(比如模型的权限与用户认证)。...中告诉django需要在表单中创建哪些字段。...比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法将数据添加到模型对应的数据库表中...所以,在用CreateView、一个模型、一个模板实现添加一行记录的功能时是多么简单,因为这些父类会自动生成object,渲染到模板,解析form表单,save到数据库中。

3.4K20

django 1.8 官方文档翻译: 5-1-1 使用表单

实例化、处理和渲染表单 在Django 中渲染一个对象时,我们通常: 在视图中获得它(例如,从数据库中获取) 将它传递给模板上下文 使用模板变量将它扩展为HTML 标记 在模板中渲染表单和渲染其它类型的对象几乎一样...在模型实例不包含数据的情况下,在模板中对它做处理很少有什么用处。但是渲染一个未填充的表单却非常有意义 —— 我们希望用户去填充它。 所以当我们在视图中处理模型实例时,我们一般从数据库中获取它。...当我们处理表单时,我们一般在视图中实例化它。...当我们实例化表单时,我们可以选择让它为空还是预先填充它,例如使用: 来自一个保存后的模型实例的数据(例如用于编辑的管理表单) 我们从其它地方获得的数据 从前面一个HTML 表单提交过来的数据 最后一种情况最令人关注...这是我们在第一个访问该URL 时预期发生的情况。 如果表单的提交使用POST 请求,那么视图将再次创建一个表单实例并使用请求中的数据填充它:form = NameForm(request.POST)。

4.3K20
  • 关于“Python”的核心知识点整理大全55

    接下来,我们显示当前的主题(见1), 它存储在模板变量{{ topic }}中。为什么可以使用变量topic呢?因为它包含在字典context中。...这些工作很多都是由 Django自动完成的。 在Django中,创建表单的最简单方式是使用ModelForm,它根据我们在第18章定义的模型中 的信息自动创建表单。...最简单的ModelForm版本只包含一个内嵌的Meta类,它告诉Django根据哪个模型创建表单,以 及在表单中包含哪些字段。...在处,我们根据模型Topic创建一个表单,该表单只包含字段text (见)。处的代码让Django不要为字段text生成标签。 2....函数new_topic()将请求对象作为参数。用户初次请求该网页时,其浏览器将发送GET请求; 用户填写并提交表单时,其浏览器将发送POST请求。

    16610

    37.Django1.11.6文档

    当将Django应用程序添加到INSTALLED_APPS中时,在下面描述的常规位置中定义的任何标签将自动在模板中加载。...在模型实例不包含数据的情况下,在模板中对它做处理很少有什么用处。 但是渲染一个未填充的表单却非常有意义 —— 我们希望用户去填充它。 所以当我们在视图中处理模型实例时,我们一般从数据库中获取它。...当我们处理表单时,我们一般在视图中实例化它。...如果模型上的相应字段有选择集,则提供给表单的选项必须是这些选择的有效子集,否则,在保存模型本身之前验证模型本身时,表单提交将失败并显示ValidationError 。...这是因为该中间模型的每个实例需要比可以在单个小部件中显示的更多的信息,并且多个小部件所需的布局将根据中间模型而变化。 但是,我们仍然希望能够在内联里编辑该信息。

    24.4K80

    关于“Python”的核心知识点整理大全56

    在3处,我们显示表单,从中可知Django使得完 成显示表单等任务有多简单:我们只需包含模板变量{{ form.as_p }},就可让Django自动创建显 示表单所需的全部字段。...用于添加新条目的表单 我们需要创建一个与模型Entry相关联的表单,但这个表单的定制程度比TopicForm要高些: forms.py from django import forms from...P\d+)捕获一个数字值,并将其存储在变量topic_id中。请 求的URL与这个模式匹配时,Django将请求和主题ID发送给函数new_entry()。 3....在7处,我们将用户重定向到显示相关主题的页面。调用reverse()时,需要提供两个实参: 要根据它来生成URL的URL模式的名称;列表args,其中包含要包含在URL中的所有实参。...表单的实参action包含URL中的topic_id值,让视图函数能够将新条目关联到正确的主题(见 2)。除此之外,这个模板与模板new_topic.html完全相同。 5.

    14010

    初探Django框架

    HelloWorld/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。...…endblock: 父模板中的预留区域,该区域留给子模板填充差异性的内容,不同预留区域名字不能相同。...子模板设置父模板预留区域的内容: { % block 名称 % } 内容 {% endblock 名称 %} Django 模型(Model) 如上图所示, 模型实际上就是和数据库进行交互的一个模块...回顾前面我们有看到Django是MTV结构的可知, 标准流程而言, 模型与数据库的交互操作是根据视图提出的需求完成的, Template模板只是负责页面的渲染显示工作(当然特殊的标签和装饰器另说), 数据库操作是完全交由模型执行的...b.如果涉及到数据调用,那么视图函数调用模型,模型去数据库查找数据,然后逐级返回。 模型将视图函数所需要的数据返回到视图函数中, 然后视图函数再把返回的数据填充到模板中空格中,最后返回网页给用户。

    2K20

    Python全栈开发之Django基础

    # 删除虚拟环境 pip list # 查看该虚拟环境中安装的包 pip install # 虚拟环境包管理 pip install django==1.11.11 # 安装django1.11.11...自动设置该字段为当前时间,用于最后一次修改的时间戳,默认为False,auto_now_add表示当对象第一次创建时自动设置当前时间,用于创建时的时间戳,默认为False TimeField: 时间字段...,默认值是False default:默认值 primary_key:若为True,则该字段会成为模型的主键,默认值是False,一般作为AutoField的选项使用 unique:如果为True, 这个字段在表中必须有唯一值...使用load标签引入模块 {%load filters%} 模板继承 父模板 如果发现在多个模板中某些内容相同,那就应该把这段内容定义到父模板中 标签block:用于在父模板中预留区域,留给子模板填充差异性的内容..."父模板路径"%} {%block 名称%} 实际填充内容 {{block.super}}用于获取父模板中block的内容 {%endblock 名称%} CSRF 跨站请求伪造,CSRF指***者盗用了你的身份

    3.8K20

    关于“Python”的核心知识点整理大全57

    在请求方法为GET时将执行的if代码块中,我们使用实参instance=entry创建一个 EntryForm实例(见2)。这个实参让Django创建一个表单,并使用既有条目对象中的信息填充它。...处理POST请求时,我们传递实参instance=entry和data=request.POST(见3),让Django根 据既有条目对象创建一个表单实例,并根据request.POST中的相关数据对其进行修改...鉴于 我们没有编写自己的视图函数,我们传递了一个字典,告诉Django去哪里查找我们将编写的模板。 这个模板包含在应用程序users而不是learning_logs中。 1....模板login.html 用户请求登录页面时,Django将使用其默认视图login,但我们依然需要为这个页面提供模 板。...我们要让登录视图处理表单,因此将实参action设置为登录页面的URL(见2)。登录视图 将一个表单发送给模板,在模板中,我们显示这个表单(见3)并添加一个提交按钮(见4)。

    9810

    基于类的通用视图:ListView 和 DetailView

    将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里的 Post 列表)的视图,Django 专门提供了一个 ListView 类视图。...将 model 指定为 Post,告诉 Django 我要获取的模型是 Post。 template_name。指定这个视图渲染的模板。 context_object_name。...在 Django 中 URL 模式的配置方式就是通过 url 函数将 URL 和视图函数绑定。...DetailView 除了从数据库中获取模型列表的数据外,从数据库获取模型的一条记录数据也是常见的需求。比如查看某篇文章的详情,就是从数据库中获取这篇文章的记录然后渲染模板。...post 传递给模板外(DetailView 已经帮我们完成), # 还要把评论表单、post 下的评论列表传递给模板。

    2.6K70

    django 1.8 官方文档翻译: 1-2-2 编写你的第一个Django应用,第2部分

    启用管理网站 默认情况下 Django 管理网站是不启用的 – 它是可选的。...通过 admin.site.register(Poll) 注册了 Poll 模型,Django 就能构造一个默认的 表单。通常情况下,你将要自定义管理表单的外观和功能。...这样的话你就需要在注册对象 时告诉 Django 对应的配置。 让我们来看看如何在编辑表单上给字段重新排序。...下面是我们表单现在的样子: 你可以为每个 fieldset 指定 THML 样式类。Django 提供了一个 “collapse” 样式类用于显示初始时是收缩的 fieldset 。...Add choice” 表单 看起来像这样: 该表单中,Poll 字段是一个包含了数据库中每个 poll 的选择框。

    2.5K40

    第 14 篇:交流的桥梁“评论功能”—— HelloDjango 系列教程

    django 会根据表单类的定义自动生成表单的 HTML 代码,我们要做的就是实例化这个表单类,然后将表单的实例传给模板,让 django 的模板引擎来渲染这个表单。 那怎么将表单类的实例传给模板呢?...和 blog 应用中定义模板标签的老套路一样,首先建立评论应用模板标签的文件结构,在 comments\ 文件夹下新建一个 templatetags 文件夹,然后创建 __init__.py 文件使其成为一个包...看到 CommentForm 中 Meta 下的 fields,django 会自动将 fields 中声明的模型字段设置为表单的属性。...email 的格式,然后将格式错误信息保存到 errors 中,模板便将错误信息渲染显示。...请修改表单中的错误后重新提交。', extra_tags='danger') 发送的消息被缓存在 cookie 中,然后我们在模板中获取显示即可。

    1.7K20

    【Django | allauth】useprofile 用户模型扩展

    : 在 引入 扩展模型应用路由时 allauth应用 和 userprofile 谁在上方一定要考虑好,不然路由覆盖等会出现页面失效或者报错的情况!!...forms.py,并重写表单,由于注册表单时,只会自定创建user对象,并没有创建userprofile并自动与扩展模型userprofile 进行关联,所以需要重写注册表单,并修改默认注册表单配置,注册时两个对象一起被创建...图片 原理: allauth应用 根据setting中的 account_signup_form_class的值(路由)引入该表单类,将该表单类的方法 siginup 替换掉原生注册表单# 自定义表单...ACCOUNT_SIGNUP_FORM_CLASS = 'userprofile.forms.SignupForm' 2)重写表单( 继承表单类) 图片 不需要和自定义一样引入表单,直接定向到该表单(...(修改了注册表单) 四、 创建proflie模板和proflie_update模板 在allauth 包中复制粘贴templates 的account包到该项目的templates的account下,原因

    1.1K10

    django框架菜鸟教程_django框架菜鸟教程

    作用: 修改代码文件,程序自动重启 Django程序出现异常时,向前端显示详细的错误追踪信息. 注意:部署线上运行的Django不要运行在调式模式下,记得修改DEBUG=False ....中定义路由时,通常以斜线/结尾,其好处是用户访问不以斜线/结尾的相同路径时,Django会把用户重定向到以斜线/结尾的路径上,而不会返回404不存在 。...value|date:“Y年m月j日 H时i分s秒” {#…#}单行注释 {%comment%}…{%endcomment%}多行注释 5、模板继承 父模板:{%block%}…{%endblock...%} 子模板:{%extends “父模板路径”%} 写在子模板文件的第一行 七、数据库 ORM框架: 通过类和类对象就能操作它对所对应的表格中的数据 根据设计的类自动生成数据库中的表格 数据库迁移:...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.1K40

    Django 表单处理流程

    Django 的表单处理:视图获取请求,执行所需的任何操作,包括从模型中读取数据,然后生成并返回HTML页面(从模板中),我们传递一个包含要显示的数据的上下文。...下面显示了 Django 如何处理表单请求的流程图,从对包含表单的页面的请求开始(以绿色显示): [ix7djaill3.png] 基于上图,Django 表单处理的主要内容是: 在用户第一次请求时,显示默认表单...将数据绑定到表单,意味着当我们需要重新显示表单时,用户输入的数据和任何错误都可取用。 清理并验证数据。...验证检查值是否适合该字段(例如,在正确的日期范围内,不是太短或太长等) 如果任何数据无效,请重新显示表单,这次使用任何用户填充的值,和问题字段的错误消息。...参考文档:使用表单1 参考资料 1 使用表单: https://developer.mozilla.org/zh-CN/docs/learn/Server-side/Django/Forms

    2.4K20

    【Django | allauth】useprofile 用户模型扩展

    : 在 引入 扩展模型应用路由时 allauth应用 和 userprofile 谁在上方一定要考虑好,不然路由覆盖等会出现页面失效或者报错的情况!!...forms.py,并重写表单,由于注册表单时,只会自定创建user对象,并没有创建userprofile并自动与扩展模型userprofile 进行关联,所以需要重写注册表单,并修改默认注册表单配置,注册时两个对象一起被创建...: 自定义表单 在配置好之后,是直接引入到allauth.account,forms的,这个时候是不能使用 重写的继承方法的!,不然引入父类的操作会陷入调用循环!...图片原理: allauth应用 根据setting中的 account_signup_form_class的值(路由)引入该表单类,将该表单类的方法 siginup 替换掉原生注册表单# 自定义表单class...(修改了注册表单)四、 创建proflie模板和proflie_update模板在allauth 包中复制粘贴templates 的account包到该项目的templates的account下,原因:

    21110

    关于“Python”的核心知识点整理大全58

    我们将使用Django提供的表单UserCreationForm, 但编写自己的视图函数和模板 1....视图函数register() 在注册页面首次被请求时,视图函数register()需要显示一个空的注册表单,并在用户提交 填写好的注册表单时对其进行处理。...用户注册时,被要求输入密码两次;由于 表单是有效的,我们知道输入的这两个密码是相同的,因此可以使用其中任何一个。在这里,我 们从表单的POST数据中获取与键'password1'相关联的值。...在表单中正确地显示所有的字段,包括错误消息——如果 用户没有正确地填写表单。...在本节中,我们将修改模型Topic,让每个主题都归属于特定用户。这也将影响条目,因为 每个条目都属于特定的主题。我们先来限制对一些页面的访问。

    12510

    探索Django:从项目创建到图片上传的全方位指南

    项目创建前提条件要顺利完成本教程,你需要具备以下条件:扎实的 Python 和 Django 基础知识,包括但不限于 Django 的模型、视图、模板以及表单等方面的理解。...当我们配置Django时,我们必须明确指定媒体文件的URL和存储位置。这可以通过设置MEDIA_URL和MEDIA_ROOT来完成。...在这个类中,我们可以自定义模型在后台管理界面中的显示方式。在这个例子中,我们通过设置list_display属性,指定了在Image模型的列表页面中显示哪些字段。...最后,我们使用admin.site.register()函数将Image模型和imageAdmin类关联起来,这样就可以在后台管理界面中对Image模型进行管理,并且按照我们定义的方式进行显示。...model = Image:在 Meta 类中,这行代码指定了表单对应的模型是 Image。这意味着表单将基于 Image 模型生成字段。

    29173

    评论

    ,如果你忘了怎么做,再回顾一下 创建 Django 博客的数据库模型 中的做法。...created_time 记录用户发表评论的时间,我们肯定不希望用户在发表评论时还得自己手动填写评论发表时间,这个时间应该自动生成。 创建了数据库模型就要迁移数据库,迁移数据库的命令也在前面讲过。...当用户想要发表评论时,他找到我们给他展示的一个评论表单(我们已经看到在文章详情页的底部就有一个评论表单,你将看到表单呈现给我们的样子),然后根据表单的要求填写相应的数据。...email 的格式,然后将格式错误信息保存到 errors 中,模板便将错误信息渲染显示。...和处理 index 页面的文章列表方式是一样的,我们在模板中通过 {% for %} 模板标签来循环显示文章对应的全部评论内容。

    3.2K60
    领券