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

如何将表单正在编辑的特定对象传递到django?

在Django中,可以通过使用表单来传递正在编辑的特定对象。以下是一种常见的方法:

  1. 首先,在视图函数中,将要编辑的对象从数据库中获取出来。可以使用Django提供的模型查询方法,例如get()filter()
  2. 创建一个表单类,继承自Django的forms.Formforms.ModelForm。在表单类中,可以定义与要编辑的对象相关的字段。
  3. 在视图函数中,根据请求的类型(GET或POST),实例化表单对象。对于GET请求,可以将要编辑的对象作为表单的初始数据传递给表单对象。对于POST请求,可以将请求的数据传递给表单对象。
  4. 在模板中,使用表单对象的字段来渲染表单。可以使用Django模板语言的表单标签,例如{{ form.field }}
  5. 在视图函数中,处理表单的提交。可以通过调用表单对象的is_valid()方法来验证表单数据的有效性。如果表单数据有效,可以使用表单对象的cleaned_data属性来获取清洗后的数据,并将其保存到数据库中。

下面是一个示例代码:

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

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    # 其他字段...

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

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ['name']
        # 其他字段...

# views.py
from django.shortcuts import render, get_object_or_404
from .models import MyModel
from .forms import MyForm

def edit_object(request, object_id):
    my_object = get_object_or_404(MyModel, pk=object_id)
    
    if request.method == 'POST':
        form = MyForm(request.POST, instance=my_object)
        if form.is_valid():
            form.save()
            # 保存成功后的处理...
    else:
        form = MyForm(instance=my_object)
    
    return render(request, 'edit_object.html', {'form': form})

# edit_object.html
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">保存</button>
</form>

在上述示例中,edit_object视图函数用于编辑特定的MyModel对象。MyForm是一个表单类,用于编辑MyModel对象的字段。在模板中,使用form.as_p渲染表单字段。

请注意,上述示例中的代码仅涵盖了将表单传递到Django的基本概念。实际应用中,可能需要根据具体需求进行适当的修改和扩展。

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

相关·内容

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

在3处,我们显示表单,从中可知Django使得完 成显示表单等任务有多简单:我们只需包含模板变量{{ form.as_p }},就可让Django自动创建显 示表单所需全部字段。...修饰符as_p让Django以段落格式渲染所有表单元素,这是一种整洁地显 示表单简单方式。 Django不会为表单创建提交按钮,因此我们在4处定义了一个这样按钮。 6....如果请求方法为POST,我们就对数据进行处理:创建一个EntryForm 实例,使用request对象POST数据来填充它(见4);再检查表单是否有效,如果有效,就设 置条目对象属性topic,再将条目对象保存到数据库...调用save()时,我们传递了实参commit=False(见5),让Django创建一个新条目对象,并 将其存储new_entry中,但不将它保存到数据库中。...19.1.3 编辑条目 下面来创建一个页面,让用户能够编辑既有的条目。 1. URL模式edit_entry 这个页面的URL需要传递编辑条目的ID。

13510

Django 3.1 官网学习路线

页面的底部提供了几个选项: 保存-保存更改并返回此类型对象更改列表页。 保存并继续编辑——保存更改并重新加载此对象管理页面。 保存并添加另一个——保存更改并为这种类型对象加载一个新空白表单。...您将看到一个页面,其中列出了通过 Django 管理员对这个对象所做所有更改,以及更改者时间戳和用户名: 第三部分 概览 视图是 Django 应用程序中 Web 页面的“类型”,通常提供特定功能和特定模板...投票行动-处理对特定问题中特定选择进行投票。 在 Django 中,Web 页面和其他内容是通过视图传递。每个视图都由一个 Python 函数(或方法,对于基于类视图)表示。...通常,您需要定制管理表单外观和工作方式。可以通过在注册对象时告诉 Django 所需选项来实现。 通过重新排列编辑表单字段来了解其工作原理。...如果在该窗口中添加一个问题并单击“Save”,Django 会将该问题保存到数据库中,并在您正在查看“add choice”表单中动态地将其添加为选中选项。

8.2K10
  • django 1.8 官方文档翻译:13-1-2 使用Django认证系统

    Django admin 站点使用如下权限: 查看”add”表单并添加一个只限具有该类型对象“add”权限用户对象。...权限不但可以根据每个对象类型,而且可以根据特定对象实例设置。...例如,视图检查用户邮件属于特定地址(例如@example.com),若不是,则重定向登录页面。...认证视图 Django提供一些视图,你可以用来处理登录、登出和密码管理。它们使用stock auth 表单,但你也可以传递你自己表单Django没有为认证视图提供默认模板。...内建表单 如果你不想用内建视图,但是又不想编写针对该功能表单,认证系统提供了几个内建表单,位于django.contrib.auth.forms: 注 内建验证表单对他们处理用户模型做了特定假设

    4.7K20

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

    这个实参让Django创建一个表单,并使用既有条目对象信息填充它。 用户将看到既有的数据,并能够编辑它们。...处理POST请求时,我们传递实参instance=entry和data=request.POST(见3),让Django根 据既有条目对象创建一个表单实例,并根据request.POST中相关数据对其进行修改...然后,我 们检查表单是否有效,如果有效,就调用save(),且不指定任何实参(见4)。接下来,我们重 定向显示条目所属主题页面(见5),用户将在其中看到其编辑条目的新版本。 3....鉴于 我们没有编写自己视图函数,我们传递了一个字典,告诉Django去哪里查找我们将编写模板。 这个模板包含在应用程序users而不是learning_logs中。 1....在5处,我们包含了一个隐藏表单元素——'next',其中实参value告诉Django在用户成功登 录后将其重定向什么地方——在这里是主页。 2.

    9410

    Django form.save 方法详细分析

    Django 中,form.save() 方法是用于将表单数据保存到数据库核心方法。...这意味着当我们调用 save 方法时,我们需要传递一个 user 参数,以便将当前用户与正在保存产品关联起来。...如果我们不调用 super,那么 save 方法就不会保存对象,而只是返回一个未保存对象。2.4 编辑和保存新产品时区别当我们编辑和保存新产品时,save 方法调用方式是一样。...然而,在编辑产品时,我们还需要传递一个 instance 参数给表单,以便 save 方法知道要更新哪个对象。...form.save() 是 Django 表单系统中一个核心方法,特别是对于 ModelForm,它简化了将表单数据保存到数据库过程。

    12510

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

    poll 进行编辑: 这有些注意事项: 这表单是根据 Poll 模型自动生成。...这样的话你就需要在注册对象 时告诉 Django 对应配置。 让我们来看看如何在编辑表单上给字段重新排序。...每个有 ForeignKey 对象关联其他对象都会得到这个链接。 当点击 “Add Another” 时,你将会获得一个 “Add poll” 表单弹出窗口。...如果你在窗口中添加了一 poll 并点击了 “Save” 按钮, Django 会将 poll 保存至数据库中并且动态添加为你正在查看 “Add choice” 表单 已选择项。...这个变量包含了每一个 已安装 Django 应用。你可以通过你认为最好方法硬编码链接到特定对象管理页面,而不是使用默认模板。

    2.5K40

    Django内置通用类视图及实例

    表示对象列表一个页面. 执行这个视图时候,self.object_list将包含视图正在操作对象列表(通常是一个查询集,但不是必须)....执行这个视图时候,self.object将包含视图正在操作对象....显示表单视图,验证错误时,重新显示表单并显示错误信息;成功时,重定向一个新URL....显示用于编辑现有对象表单视图,重新显示具有验证错误信息视图,并且保存对象.这里使用从对象模型自动生成表单(除非手动制定表单类)....显示确认页面并删除现有对象视图.仅当请求方法为POST时,才会删除给定内容.如果此视图是通过GET提取,它将显示一个确认页面,其中包含POST同一网址表单.

    2.9K40

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

    Django 目标是让开发者能够以快速和简单方式构建复杂 Web 应用,通过提供许多预构建组件和功能,如 ORM(对象关系映射)、表单处理、认证系统、管理界面等,从而降低了开发工作复杂性。...一个代码编辑器,比如 Visual Studio Code,它能够提供丰富编辑功能和便捷开发环境,有助于你更高效地编写和调试代码。...,通过将 `request.POST` 和 `request.FILES` 传递给它来填充表单数据。...form.save()#如果表单数据有效,这一行将保存表单数据数据库中。...从项目创建环境配置,再到 admin 端图像处理和用户图片上传,我们逐步学习了如何利用 Django 提供功能快速搭建 Web 应用。

    27473

    Django内置通用类视图CBV及示例

    表示对象列表一个页面. 执行这个视图时候,self.object_list将包含视图正在操作对象列表(通常是一个查询集,但不是必须)....执行这个视图时候,self.object将包含视图正在操作对象....显示表单视图,验证错误时,重新显示表单并显示错误信息;成功时,重定向一个新URL....显示用于编辑现有对象表单视图,重新显示具有验证错误信息视图,并且保存对象.这里使用从对象模型自动生成表单(除非手动制定表单类)....显示确认页面并删除现有对象视图.仅当请求方法为POST时,才会删除给定内容.如果此视图是通过GET提取,它将显示一个确认页面,其中包含POST同一网址表单.

    3.2K10

    众多Python Web框架比较,哪个适合你,你就用哪个!

    如果你对性能基准感到好奇,请查看TechEmpower正在进行一系列试验,这些试验比较了各种任务中多个Web框架,并将代码和方法发布GitHub并进行不断重新评估。...如果要执行表单验证,可以使用从简单CSRF保护返回详细错误反馈完整逐个字段验证机制所有内容。 如果没有强大文档可以使用像Django那样丰富和广泛功能。...也可以通过解析浏览器请求(即Accept-Language HTTP标头)或将翻译绑定特定路由来设置语言选择。 Weppy文档与框架本身具有相同风格。它干净,可读,并且被人类消费。...当启动Zope并连接到服务器时,将看到Web UI,可以在其中创建和编辑ZODB对象。...同样优秀是“片段”集合,这些片段是如何使用Flask完成特定任务快速和肮脏示例,例如如果存在如何返回对象,如果不存在则返回404错误。

    4.5K20

    Java 新手如何使用Spring MVC 中双向数据绑定?

    Spring MVC使用数据绑定来将HTTP请求中参数绑定Java对象,然后将Java对象数据传递视图中,以便在用户界面上显示。...我们将创建一个简单Java Web应用程序,演示如何将用户输入绑定Java对象,并将Java对象数据渲染视图上。...您将看到一个用户输入表单,用户输入数据将绑定User对象,然后在确认页面上显示。...自定义编辑器:Spring允许您注册自定义属性编辑器,以便将表单字段转换为特定Java类型。 数据转换:您可以定义自定义数据转换器,以便在数据绑定过程中转换数据。...JSON绑定:如果您正在构建RESTful API,Spring MVC还支持将JSON数据绑定Java对象

    21810

    35.Django2.0文档

    如果我们想退出循环,可以改变正在迭代变量,让其仅仅包含需要迭代项目。 同理,Django也不支持continue语句,我们无法让当前迭代操作跳回到循环头部。...所以,如果结果是多个对象,会导致抛出异常: ? 如果查询没有返回结果也会抛出异常:  6.数据排序 在运行前面的例子中,你可能已经注意返回结果是无序。... 正如自定义列表那样,编辑表单多方面也能自定义。...管理工具有一个用户权限系统,通过它你可以根据用户需要来指定他们权限,从而达到部分访问系统目的。 你通过管理界面编辑用户及其许可就像你编辑别的对象一样。...普通活跃,非超级用户管理用户可以根据一套设定好许可进入。 管理界面中每种可编辑对象(如:books、authors、publishers)都有三种权限:创建许可,编辑许可和删除许可。

    11.3K100

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

    Django 模型描述一个对象逻辑结构、行为以及展现给我们方式,与此类似,Form 类描述一个表单并决定它如何工作和展现。...实例化、处理和渲染表单Django 中渲染一个对象时,我们通常: 在视图中获得它(例如,从数据库中获取) 将它传递给模板上下文 使用模板变量将它扩展为HTML 标记 在模板中渲染表单和渲染其它类型对象几乎一样...模型和表单 实际上,如果你表单打算直接用来添加和编辑Django 模型,ModelForm 可以节省你许多时间、精力和代码,因为它将根据Model 类构建一个表单以及适当字段和属性。...迭代隐藏和可见字段 如果你正在手工布局模板中一个表单,而不是依赖Django 默认表单布局,你可能希望将 字段与非隐藏字段区别对待。...fieldWrapper"> {{ field.errors }} {{ field.label_tag }} {{ field }} {% endfor %} 如果传递模板上下文中表单对象具有一个不同名称

    4.2K20

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

    P\d+)捕获值,并将其存储topic_id中(见1)。在2处,我们使用get()来获取 指定主题,就像前面在Django shell中所做那样。...注意 2处和3处代码被称为查询,因为它们向数据库查询特定信息。在自己项目中编 写这样查询时,先在Django shell中进行尝试大有裨益。...将显示所有主题页面中每个主题都设置为链接 在浏览器中查看显示特定主题页面前,我们需要修改模板topics.html,让每个主题都链接 相应网页,如下所示: topics.html...创建一个名为forms.py文件,将其存储models.py所在目录中,并在 其中编写你第一个表单: forms.py from django import forms from .models...我们使用reverse()获取页面topicsURL,并将其传递给HttpResponseRedirect()(见6),后者将用户浏览器重定向页 面topics。

    16110

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

    每个用户都只能 访问自己数据,无论是查看数据、输入新数据还是修改旧数据时都如此。 19.4 小结 在本章中,你学习了如何使用表单来让用户添加新主题、添加新条目和编辑既有条目。...你让老用户能够登录和注销,并学习了如何使用Django提供 表单UserCreationForm让用户能够创建新账户。...然后,你通过使用外键将数据关联特定用户,还学习了如何执行要求指定默 认数据数据库迁移。 最后,你学习了如何修改视图函数,让用户只能看到属于他数据。...在本节中,我将简要地介绍应用程序django-bootstrap3,并演示如何将其继承项目中,为 部署项目做好准备。...20.1.1 应用程序 django-bootstrap3 我们将使用django-bootstrap3来将Bootstrap继承项目中。

    13210

    django inclusion_tag 包含标签

    例如,Django管理界面使用自定义模板标签显示“添加/更改”表单页面底部按钮。...这些按钮看起来总是一样,但链接目标会根据正在编辑对象而改变 - 因此它们是使用填充了当前对象详细信息小模板完美案例。(在管理员情况下,这是submit_row标签。)...这些类型标签称为“包含标签”。 编写包含标签可能最好通过示例来说明。让我们编写一个标记,输出给定Poll对象选项列表,例如在教程中创建。...当它设置为时 True,标记将传递给上下文对象,如本例所示。这是本案与前一个案例唯一区别inclusion_tag。 inclusion_tag函数可以接受任意数量位置或关键字参数。...然后在模板中,可以将由空格分隔任意数量参数传递给模板标记。与在Python中一样,关键字参数值使用等号(“ =”)设置,并且必须在位置参数之后提供。

    94420

    django 1.8 官方文档翻译:5-1-2 表单API

    class Form 若要创建一个未绑定表单实例,只需简单地实例化该类: >>> f = ContactForm() 若要绑定数据表单,可以将数据以字典形式传递表单构造函数第一个参数: >...如果你正在使用AJAX 请求表单视图,而客户端会解析响应并将错误插入页面中,你必须在客户端对结果进行转义以避免可能跨站脚本攻击。...无论你传递是'1994-07-15' 格式字符串、datetime.date 对象、还是其它格式数字,DateField 将始终将它们转换成datetime.date 对象,只要它们是合法。...你可以自己编写代码来对特定字段(根据它们名字)或者表单整体(考虑不同字段组合)进行验证。更多信息参见表单和字段验证。 输出表单为HTML 表单对象第二个任务是将它渲染成HTML。...``is_multipart() 如果你正在编写可重用视图或模板,你可能事先不知道你表单是否是一个multipart 表单

    2.8K30
    领券