使用Django怎么实现ModelForm增删改数据

  介绍

本篇文章为大家展示了使用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增删改数据