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

使用Django在表单中生成和提交动态数量的对象

在Django中,要生成和提交动态数量的对象,可以使用formsetformset允许您在表单中处理多个相同类型的对象。以下是使用Django的formset创建和提交动态数量的对象的步骤:

  1. 首先,在views.py中导入所需的模块:
代码语言:python
代码运行次数:0
复制
from django.forms import formset_factory
from django.shortcuts import render
from .forms import YourForm, YourFormSet
  1. views.py中创建一个视图来处理表单和表单集:
代码语言:python
代码运行次数:0
复制
def your_view(request):
    YourFormSet = formset_factory(YourForm, extra=3)
    if request.method == 'POST':
        formset = YourFormSet(request.POST)
        if formset.is_valid():
            formset.save()
            return redirect('success_page')
    else:
        formset = YourFormSet()
    return render(request, 'your_template.html', {'formset': formset})

在这个例子中,formset_factory用于创建一个表单集,extra=3表示表单集中将有3个额外的表单。您可以根据需要更改此值。

  1. your_template.html中,使用formset标签渲染表单和表单集:
代码语言:html
复制
<form method="post">
  {% csrf_token %}
  {{ formset.management_form }}
  {% for form in formset %}
    {{ form }}
  {% endfor %}
 <input type="submit" value="Submit">
</form>

这将在表单中生成和提交动态数量的对象。

总结:

在Django中,要生成和提交动态数量的对象,可以使用formsetformset允许您在表单中处理多个相同类型的对象。要使用formset,请首先在views.py中导入所需的模块,然后创建一个视图来处理表单和表单集。最后,在模板中使用formset标签渲染表单和表单集。

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

相关·内容

  • django之文件上传下载等相关

    实现步骤: 1)创建项目Django_upload:django-admin startproject Django_upload;创建app:cd Django_upload;python manage.py startapp blog。 2)设计模型(M) 这里的模型只包括了两个属性:用户名(即谁上传了该文件);文件名。具体形式如下所示: #coding=utf-8 from __future__ import unicode_literals from django.db import models class NormalUser(models.Model): username=models.CharField('用户名',max_length=30) #用户名 headImg=models.FileField('文件',upload_to='./upload')#文件名 def __str__(self): return self.username class Meta: ordering=['username']#排序风格username 同步数据库:Python manage.py makemigrations python manage.py migrate 3)设计视图(V) view.py: #coding=utf-8 from django.shortcuts import render,render_to_response from django import forms from django.http import HttpResponse from blog.models import * # Create your views here. class NormalUserForm(forms.Form): #form的定义和model类的定义很像 username=forms.CharField() headImg=forms.FileField() #在View中使用已定义的Form方法 def registerNormalUser(request): #刚显示时调用GET方法 if request.method=="POST": uf = NormalUserForm(request.POST,request.FILES)#刚显示时,实例化表单(是否有数据) if uf.is_valid():#验证数据是否合法,当合法时可以使用cleaned_data属性。 #用来得到经过'clean'格式化的数据,会所提交过来的数据转化成合适的Python的类型。 username = uf.cleaned_data['username'] headImg = uf.cleaned_data['headImg'] #write in database normalUser=NormalUser()#实例化NormalUser对象 normalUser.username = username normalUser.headImg = headImg normalUser.save()#保存到数据库表中 return HttpResponse('Upload Succeed!')#重定向显示内容(跳转后内容) else: uf=NormalUserForm()#刚显示时,实例化空表单 return render(request,'register.html',{'uf':uf})#只有刚显示时才起作用 配置urls.py: from django.conf.urls import url from django.contrib import admin from blog.views import * urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^register/$',registerNormalUser), ] 4)设计模板与表单(T)templates/register.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="

    03

    Django2.0中文(中间件)

    1、 中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件负责做一些特定的功能。 由于其影响的是全局,所以需要谨慎使用,使用不当会影响性能。 说的直白一点,中间件可以帮助我们在视图函数执行之前和执行之后做一些额外的操作。 它的本质是一个自定义类,类中定义了几个方法,Django框架会在请求的特定时间去执行这些方法。 2、中间的五种方法: process_request(self, request) process_view(self, request, view_func, view_args, view_kwargs) process_template_response(self, request, response) process_exception(self, request, exception) process_response(self, request, response) 以上方法的返回值可以是None,或者是一个HttpResponse对象,如果是None,则继续按照django定义的规则向后继续执行,如果是HttpResponse对象,则直接将改对象返回给用户。 3、自定义中间件: from django.utils.deprecation import MiddlewareMixin

    01
    领券