Django表单的增删改查操作

增删改查操作前的步骤

1.配置数据库信息,settings.py中的配置

2.创建模型类,同步到数据库(本次是使用sqlite数据库,mysql的话需要建库和在settings中进行配置)。

3.写对应的页面(templates下的配置)

4.视图函数的编写(views.py)

5.配置路由(urls.py)

建立数据库模型models.py,并且迁移。

对person表的设计如下 

from django.db import models

# Create your models here.

#用户模型类
class Person(models.Model):
    id = models.AutoField(primary_key=True) #主键自动增长,默认存在
    name = models.CharField(max_length=32)  #姓名
    age = models.IntegerField() #整数
    height = models.DecimalField(max_digits=5,decimal_places=2)#一共5位,小数点后两位
    weight = models.FloatField()  #浮点数
    birthday = models.DateField()#YYYY-MM-DD格式输入,否则报错

    def __str__(self):
        return "".format(self.name)

数据模型建立之后需要执行迁移。

命令:python manage.py makemigrations

命令:python manage.py migrate

迁移完成后生成数据库,数据库出问题的话操作如下

迁移文件生成数据库。

Django表单的增删改查操作_第1张图片

模型建立完成之后,拖进来!!!

Django表单的增删改查操作_第2张图片

数据表中的数据为:

Django表单的增删改查操作_第3张图片

数据库出不来的话需要配置,如下:

Django表单的增删改查操作_第4张图片

Django表单的增删改查操作_第5张图片

Django表单的增删改查操作_第6张图片

当然选中相应选项的话这个界面也能看到mysql数据库。

增删改查对应的html页面如下

添加用户




    
    添加用户



{# 跨站请求为伪造 #} {% csrf_token %}

用户名:

年龄:

身高:

体重:

生日:

提交:

删除用户直接在后台views.py中执行,然后返回到展示页面

修改页面




    
    添加用户



{# 跨站请求为伪造 #} {% csrf_token %} {# 将id保存到隐藏域#}

用户名:

年龄:

身高:

体重:

生日:

提交:

展示页面




    
    所有用户




    {% for person_obj in person_obj_lst %}
        
    {% endfor %}
    
序号 id 姓名 年龄 身高 体重 生日 操作
{{ forloop.counter }} {{ person_obj.id }} {{ person_obj.name }} {{ person_obj.age }} {{ person_obj.height }} {{ person_obj.weight }} {{ person_obj.birthday|date:"Y-m-d" }} 删除 修改
添加

view.py中的增删改查操作如下

在views.py中进行操作的时候需要先将models.py中的类引入,还有一些其他的包也需要引入

from django.shortcuts import render,redirect
from django.http import HttpResponse
from Fapp import models  #引入模型类

增加用户

from django.shortcuts import render,redirect
from django.http import HttpResponse
from Fapp import models  #引入模型类

#request参数,django会将http协议以及提交的内容,都封装到了HttpRequest对象中
def add_person(request):
    if request.method == 'POST':
        # 2.获取表单提价的数据
        #将表单内容封装成键值对,然后根据页面,中的name值来取值。
        username = request.POST.get("username")  #获取到前端表单穿来的数据
        age = request.POST.get('age')
        height = request.POST.get('height')
        weight = request.POST.get('weight')
        brithday = request.POST.get('brithday')
        print(username,age,height,weight,age,brithday)

        # 3.保存到数据库
        models.Person.objects.create(
            name = username,
            age = age,
            height = height,
            weight = weight,
            birthday = brithday,
        )
        return redirect('/all_person/')
        # 4.简单的返回第一个提示
    else:
        #1.get请求返回页面
        return render(request, 'add_person.html')

删除用户

#删除用户
def delete_person(request):
    #1.获取id
    id = request.GET.get('id')
    #2.查询数据库并删除数据
    models.Person.objects.get(id=id).delete()#删除指定对象
    #3。重定向到all_person
    return redirect('/all_person/')

修改用户的信息

#修改用户
def update_person(request):

    if request.method == "GET":
        id = request.GET.get('id')
        per_obj = models.Person.objects.get(id=id)
        return render(request,"update_person.html",{"per_obj":per_obj})
    else:
        #获取表单提交过来的内容
        id = request.POST.get('id')
        username = request.POST.get('username')
        age = request.POST.get('age')
        height = request.POST.get('height')
        weight = request.POST.get("weight")
        brithday = request.POST.get("brithday")


        #第一种修改方式
        per_obj = models.Person.objects.get(id=id)
        per_obj.name = username
        per_obj.age = age
        per_obj.height = height
        per_obj.weight = weight
        per_obj.birthday = brithday
        per_obj.save()


        #第二种修改方式
        # models.Person.objects.filter(id=id).update(id=id,
        #                                            name=username,age=age,
        #                                            height=height,weight=weight,
        #                                            birthday=brithday)
        return redirect('/all_person/')


显示所有用户的信息

#显示所有用户
def all_person(request):
    #查询数据库
    person_obj_lst = models.Person.objects.all() #查询所有的数据库记录
    #all(),返回类似于列表的数据,可以当成列表使用
    #>, >, >, >, >]>
    # per_obj = ret[1]
    # print(per_obj)

    #返回页面

    return render(request,'all_person.html',{"person_obj_lst":person_obj_lst})

路由(urls.py)中的配置

路由中进行配置之前需要将views.py引入,这样才能让路由找到views.py中的函数方法。

配置如下:

from django.contrib import admin
from django.urls import path
from Fapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('add_person/',views.add_person),#添加用户
    path('all_person/',views.all_person),#查询所有用户
    path('delete_person/',views.delete_person),#删除用户
    path('update_person/',views.update_person),
]

项目目录如下

Django表单的增删改查操作_第7张图片

关于get和post常用的地方

Get常用在:浏览器输入,超链接,重定向

Post常用在:表单请求

Url五部分组成:协议 域名 端口号 路径 参数

          路径与参数之间以?隔开            

          参数与参数之间以 &隔开

表单是以post方式提交的,提交后的内容会被封装成字典格式,传到后台。

Django表单的增删改查操作_第8张图片

重定向和form表单需要注意的地方

这里需要加两个斜杠

重定向注意事项也要加两个斜杠

Django表单的增删改查操作_第9张图片

 

 

 

 

你可能感兴趣的:(Django)