梅科尔-第五次django培训

Django实现增删改查,主要是依赖于models来实现的。下面是一个非常简单的models.py文件,该文件只有一个model,名为Publisher。models.py文件中每一个类都对应于数据库中的一张表。

from django.db import models
 
# Create your models here.
 
 
class Publisher(models.Model):
    name = models.CharField(max_length=128)     # 出版社名称

增加操作

models.Publisher.objects.create(name="新华出版社")

给数据库中和Publisher对应的表中插入了一条数据,并且这条数据字段name的值是新华出版社。

删除操作
models的删除操作也是非常简单,依旧使用一句话就可以完成。

models.Publisher.objects.filter(name="清华大学出版社").delete()

这样就删除了数据库中和Publisher对应的表中name字段值为清华大学出版社的数据。

修改操作
修改操作比起前面两个可能稍微显得有些复杂。如下:

obj = models.Publisher.objects.get(id=id)    #先查询
obj.name = name    # 在内存中修改
obj.save()         # 将修改保存到数据库

你可能会猜到,get方法是查询,但是你会对get方法中的id字段存有疑问,明明我们没有前面的Publisher类中没有这个变量。那么为什么会有这个名为id的字段呢?这是因为Django的models会自动生成一个主键。不信,我给你看看数据库的字段,你就明白了。

查询操作
在前面的修改操作里已经提到了查询操作了,其实查询操作有很多,他们有一些不一样的地方。前面的删除操作中有一个方法是filter,它其实也是查询。她们的区别如下:

obj1 = models.Publisher.objects.get(name="新华出版社")    #返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
obj2 = models.Publisher.objects.filter(name="新华出版社") #它包含了与所给筛选条件相匹配的对象,返回的是一个对象,如果查询不到,那么返回的是空列表,不报错。
obj3 =  models.Publisher.objects.filter(name="新华出版社").first()    #返回与之匹配的第一个对象,如果没有,则返回空。
obj4 = models.Publisher.objects.all()    #获取表中所有数据

urls.py路由设置
路由设置,其实就是指定前端的请求被哪一个后端API所处理。典型的url如下:

from django.contrib import admin
from django.urls import path
from app01 import views     # 导入views.py模块
urlpatterns = [
    path('admin/', admin.site.urls),
    path('publisher_list/', views.publisher_list),    # publisher_list/请求被views.py文件中的publisher_list函数处理
    path('publisher_add/', views.publisher_add),      # publisher_add/请求被views.py文件中的publisher_add函数处理
    path('publisher_del/', views.publisher_del),      # publisher_del/请求被views.py文件中的publisher_del函数处理
    path('publisher_edit/', views.publisher_edit),    # publisher_edit/请求被views.py文件中的publisher_edit函数处理
]

views.py中的后端API
 

from django.shortcuts import render, redirect
from app01 import models
 
 
# Create your views here.
 
 
def publisher_list(request):
    obj = models.Publisher.objects.all()  # 获取所有对象
    return render(request, 'publisher_list.html', {'publisher_list': obj})  # {'publisher_list': obj}是模板,可以传递给前端页面。
 
 
def publisher_add(request):
    if request.method == "POST":  # 如果是POST请求
        pub_name = request.POST.get('pub_name')  # 获取出版社的名称
        if not pub_name:
            return render(request, 'publisher_add.html', {'error': "出版社名字不能为空"})
        if models.Publisher.objects.filter(name=pub_name):
            return render(request, 'publisher_add.html', {'error': "出版社已经存在"})
        models.Publisher.objects.create(name=pub_name)  # 增加出版社,使用create方法
        return redirect('/publisher_list/')  # 增加完成以后,跳转到获取所有出版社页面
    return render(request, 'publisher_add.html')  # 默认返回增加页面。
 
 
def publisher_del(request):
    pk = request.GET.get('id')  # 获取URL中id字段的值
    models.Publisher.objects.filter(id=pk).delete()    # 删除数据库中的数据
    return redirect('/publisher_list/')     # 重定向页面。
 
 
def publisher_edit(request):
    id = request.GET.get('id')
    obj1 = models.Publisher.objects.get(id=id)
    if request.method == "GET":
        return render(request, 'publisher_edit.html', {'pub_obj': obj1})
    else:
        name = request.POST.get('pub_name')
        obj2 = models.Publisher.objects.filter(name=name)
        if obj2:
            return render(request, 'publisher_edit.html', {'msg': "该出版社已存在"})
        else:
            obj1.name = name    # 在内存中修改
            obj1.save()         # 将修改保存到数据库
            return redirect('/publisher_list')  # 重定向到list页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fp-growth算法是一种用于频繁模式挖掘的算法,它通过构建一棵FP树来发现数据集中的频繁项集。与Apriori算法相比,fp-growth算法具有更高的效率,因为它只需要扫描数据集两次,而不需要产生候选项集。在Python中,我们可以使用django框架来实现fp-growth算法。 首先,我们需要定义一个数据模型,表示数据集中的每个事务。事务中包含的项可以由一个字符串列表来表示。然后,我们可以使用django提供的模型管理器来操作数据库中的数据。 接下来,我们可以编写一个fp-growth算法的实现函数。该函数接受一个数据集和一个最小支持度阈值作为参数,并返回所有频繁项集。 在函数内部,我们可以首先生成一个空的FP树,然后对数据集进行第一次扫描,统计每个项的出现频率。根据最小支持度阈值,筛选出频繁项,并按照频繁项的出现频率排序。 然后,我们可以对数据集进行第二次扫描,构建FP树。在构建过程中,如果某个项没有达到最小支持度阈值,则舍弃该项。最后,我们可以通过遍历FP树,获得所有频繁项集。 在django中,我们可以定义一个视图函数,用于接收用户的请求并返回频繁项集的结果。该函数可以根据用户输入的数据集和最小支持度阈值调用fp-growth算法的实现函数,并将结果返回给用户。 除此之外,我们还可以使用django的模板语言来美化结果的展示,使其更加直观和易读。用户可以通过浏览器访问我们搭建的网页,输入数据集和最小支持度阈值,并查看计算结果。 总之,通过使用django框架实现fp-growth算法,我们可以方便地进行频繁模式挖掘,并通过网页的方式展示结果,提高用户的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值