介绍
本篇文章为大家展示了使用Django怎么实现ModelForm增删改数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
01。首先创建一个简单的模型,模型只有三个文本字段,标题标题,内容文本,添加日期date_added,如下:
#模型。py
得到django.db import 模型 得到django.utils import 时区 class 文章(models.Model): title 才能=,models.CharField(& # 39;标题& # 39;,,max_length=100) text 才能=,models.TextField(& # 39;内容& # 39;) 时间=date_added 才能;models.DateTimeField(默认=timezone.now) def 才能__str__(自我): ,,,return 自我。标题
创建完模型别忘了生成数据库,makemigrations方法(生成迁移文件),迁移(迁移到数据库)。
02。在项目中创建一个形式。py的文件,我这里的项目名称是app1,在其中创建继承一个ModelForm的表单类ArticleForm,他的子类中包含很多内置的方法,我都都可以对其覆盖,有兴趣的同学可以看官方文档,讲的非常详细。
文档地址:https://docs.djangoproject.com/zh-hans/2.1/topics/forms/modelforms/django.forms.ModelForm,
#, form.py 得到django.forms import  ModelForm 得到.models import 文章 class ArticleForm (ModelForm):,, #,继承ModelForm类 class 才能;元: ,,,model =, Article , #,具体要操作那个模型 ,,,fields =,(& # 39;标题# 39;,,& # 39;文本# 39;,,& # 39;date_added& # 39;], #,允许编辑的字段
03。创建我们视图函数,开始增删改
#, views.py 得到django.shortcuts import 渲染,redirect 得到.models import 文章 得到.form import  ArticleForm def 文章(请求): ,#查询列表页面,获取文章的所有信息 时间=articles 才能;Article.objects.all () return 才能;渲染(请求,,& # 39;app1/articles.html& # 39;,,{& # 39;文章# 39;:文章}) #,与其对应的url,在应用中的urls . py中设置 路径才能(& # 39;文章/& # 39;,,views.articles,, name=& # 39;文章# 39;), #,添加页面 def new_article(请求): ,#如果不是发布方法访问 if 才能;request.method  !=, & # 39;文章# 39;: ,,,#,创建一个空表单在页面显示 ,,,form =, ArticleForm () 其他的才能: ,,,#,否则为发布方式 ,,,#,request.POST方法,将会获取到表单中我们输入的数据 ,,,new_article =, ArticleForm (request.POST) ,,,#,验证其合法性,使用is_valid()方法 ,,,if new_article.is_valid (): ,,,,,#,验证通过,使用保存()方法保存数据 ,,,,,new_article.save () ,,,,,#,保存成功,使用重定向()跳转到指定页面 ,,,,,return 重定向(& # 39;app1:文章# 39;) return 才能;渲染(请求,,& # 39;app1/new_article.html& # 39;,,{& # 39;形式# 39;:形式}) #,编辑修改页面 def edit_article(请求,,article_id): #,才能查询到指定的数据 时间=article 才能;Article.objects.get (id=article_id) if 才能;request.method  !=, & # 39;文章# 39;: ,,#,如果不是,创建一个表单,并用实例=当条前数据填充表单 ,,,form =, ArticleForm(实例=文章), 其他的才能: #才能,如果是post、实例=当条前数据填充表单,并用数据=https://www.yisu.com/zixun/request.POST获取到表单里的内容==ArticleForm(实例文章,data=request.POST) form.save() #保存 如果form.is_valid(): #验证 返回重定向(app1:文章)#成功跳转 返回渲染(请求,“app1/edit_article。html的,{“形式”:形式,“文章”:文章}) #删除页面 def del_article(请求,article_id): 文章=Article.objects.get (id=article_id) 如果请求。方法==癙OST”: article.delete () 返回重定向(app1:文章) 返回渲染(请求,“app1/del_article。html的,{“条”:文章})
05。设置所有视图的url
#,列表 路径(& # 39;文章/& # 39;,,views.articles,, name=& # 39;文章# 39;), #,添加 路径(& # 39;new_article/& # 39;,, views.new_article,, name=& # 39; new_article& # 39;), #,修改 路径(& # 39;edit_article/& lt; int: article_id>/& # 39;,, views.edit_article,, name=& # 39; edit_article& # 39;), #,删除 路径(& # 39;del_article/& lt; int: article_id>/& # 39;,, views.del_article,, name=& # 39; del_article& # 39;),使用Django怎么实现ModelForm增删改数据