基于Django+Python的房屋信息可视化及价格预测系统设计与实现(带文档)

项目运行

需要先安装Python的相关依赖:pymysql,Django==3.2.8,pillow 使用pip install 安装

第一步:创建数据库

第二步:执行SQL语句,.sql文件,运行该文件中的SQL语句

第三步:修改源代码中的settings.py文件,改成自己的mysql数据库用户名和密码

第四步:运行命令:python manage.py runserver 8000

第五步:打开浏览器查看http://127.0.0.1:8000

毕设帮助,指导,本源码分享(见文末)

系统介绍:

系统简介

本系统是一个基于Django框架和Python语言开发的房屋信息可视化及价格预测系统,旨在为用户提供房价预测、房屋分析、用户管理等功能。系统通过数据爬取、计算和分析,帮助用户了解房价走势,避免在房价最高时入场,造成不必要的经济损失。

整体功能包含:
  • 用户注册与登录
  • 房价预测
  • 房屋信息管理
  • 房屋数据分析
  • 个人信息查看与维护
前台模块:
  • 首页展示:展示系统公告、站内新闻、房价预测信息等。
  • 房价预测:用户输入房屋相关信息,系统进行价格预测。
  • 房屋信息展示:展示系统中所有房屋的预测数据。
后台模块:
  • 用户管理:管理员可以查看、修改或删除用户信息。
  • 房屋信息管理:管理房屋数据,包括添加、删除和修改。
  • 数据分析:对房屋数据进行分析,生成图表。

功能截图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

代码实现:


def register(request):
    """
    注册账号
    :return:
    """
    try:
        name = request.POST.get('username')
        passwd = request.POST.get('password')
        phone = request.POST.get('phone')
        user = User.objects.filter(name=name)
        if user:
            return JsonResponse({'message': '用户已存在,请直接登录'}, status=403)
        User.objects.create(
            name=name,
            password=passwd,
            phone=phone,
            role=2,
            description=''
        )
        response_data = {'message': '注册成功'}
        return JsonResponse(response_data)
    except Exception as e:
        print(e)
        return JsonResponse({'message': '注册失败'}, status=401)


def password(request):
    username = request.session['username']
    role = int(request.session['role'])
    user_id = request.session['user_id']
    return render(request, 'modify_password.html', locals())


def get_user(request):
    """
    获取用户列表信息 | 模糊查询
    :param request:
    :return:
    """
    keyword = request.GET.get('name')
    page = request.GET.get("page", '')
    limit = request.GET.get("limit", '')
    role_id = request.GET.get('position', '')
    response_data = {}
    response_data['code'] = 0
    response_data['msg'] = ''
    data = []
    if keyword is None:
        results_obj = User.objects.all()
    else:
        results_obj = User.objects.filter(name__contains=keyword).all()
    paginator = Paginator(results_obj, limit)
    results = paginator.page(page)
    if results:
        for user in results:
            record = {
                "id": user.id,
                "name": user.name,
                "password": user.password,
                "phone": user.phone,
                "role": user.role,
                'create_time': user.create_time.strftime('%Y-%m-%d %H:%m:%S'),
                "desc": user.description,
            }
            data.append(record)
        response_data['count'] = len(results_obj)
        response_data['data'] = data

    return JsonResponse(response_data)


def user(request):
    """
    跳转用户页面
    """
    username = request.session['username']
    role = int(request.session['role'])
    user_id = request.session['user_id']
    return render(request, 'user.html', locals())


def login_check(request):
    """
    登录校验
    """
    response_data = {}
    name = request.POST.get('username')
    password = request.POST.get('password')
    user = User.objects.filter(name=name, password=password).first()
    info = {}
    if user:
        # 将用户名存入session中
        request.session["username"] = user.name
        request.session["role"] = user.role
        request.session["user_id"] = user.id
        response_data['message'] = '登录成功'
        return JsonResponse(response_data, status=201)
    else:
        return JsonResponse({'message': '用户名或者密码不正确'}, status=401)


def edit_user(request):
    """
    修改用户
    """
    response_data = {}
    user_id = request.POST.get('id')
    username = request.POST.get('username')
    phone = request.POST.get('phone')
    desc = request.POST.get('desc')

    User.objects.filter(id=user_id).update(
        name=username,
        desc=desc,
        phone=phone)
    response_data['msg'] = 'success'
    return JsonResponse(response_data, status=201)


def del_user(request):
    """
    删除用户
    """
    user_id = request.POST.get('id')
    result = User.objects.filter(id=user_id).first()
    try:
        if not result:
            response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}
            return JsonResponse(response_data, status=403)
        result.delete()
        response_data = {'message': '删除成功!'}
        return JsonResponse(response_data, status=201)
    except Exception as e:
        response_data = {'message': '删除失败!'}
        return JsonResponse(response_data, status=403)


def change_password(request):
    """
    修改密码
    """
    old_pwd = request.POST.get('password1')
    username = request.session["username"]
    user_obj = User.objects.filter(name=username).first()
    if user_obj.password == old_pwd:
        User.objects.filter(name=username).update(password=request.POST.get('password2'))
        return JsonResponse({'msg': '修改成功!', 'error': 0})
    else:
        return JsonResponse({'msg': '旧密码不正确,请重新输入', 'error': 403})

论文参考:

在这里插入图片描述

源码获取:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/900814.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无人机喊话器详解!

喊话器材料 外壳常采用尼龙纤维增强材料,这种材料具有抗摔、抗震、轻便、灵活、质量稳定、操作简单等优点,能够满足不同场景的需求。 喊话范围 无人机喊话器的喊话范围主要取决于设备的型号、环境条件以及喊话器的性能参数。一般来说,无人…

【334】基于springboot的仓库管理系统

本科毕业设计论文 题目:仓库管理系统设计与实现 摘 要 信息内容数据从传统到当今,一直在改变,忽然互联网技术让传统信息内容管理见到划时代的黎明,由于传统信息内容管理从时效性、安全系数、可执行性等多个方面,碰到…

rsync算法原理

1. 简介 rsync是一种文件同步的工具,也是一种算法。 2. 算法原理 背景:计算机 α \alpha α 上有文件 a, 计算机 β \beta β上有文件b。要对这两个文件进行同步。 β \beta β将文件b分成大小为S字节的若干块,最后一份可能不足S字节对于b…

中小企业设备维护新策略:Spring Boot系统设计与实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

安灯系统助力汽车零部件工厂快速解决生产异常

在汽车零部件制造领域,高效的生产管理和快速解决异常情况是确保产品质量和生产进度的关键。而安灯系统的应用,正为汽车零部件工厂带来了全新的变革,助力其快速解决生产异常。 汽车零部件工厂的生产报工产线看板直观地反映出生产的各项关键数据…

Redis的RDB执行原理

引入‘页表’的概念 Linux里面每个进程都是无法直接操作物理内存的,每个进程只能用页表映射本进程的虚拟内存到物理内存的映射。 bgsave的时候,主进程会fork(复制)一个子进程,然后该过程仅仅复制了页表。复制页表的过程…

使用 ASP.NET Core 8.0 创建最小 API

构建最小 API,以创建具有最小依赖项的 HTTP API。 它们非常适合需要在 ASP.NET Core 中仅包括最少文件、功能和依赖项的微服务和应用。 本教程介绍使用 ASP.NET Core 生成最小 API 的基础知识。 在 ASP.NET Core 中创建 API 的另一种方法是使用控制器。 有关在最小 …

使用 pydub 的 AudioSegment 获取音频时长 - python 实现

通过使用 pydub 的 AudioSegment 获取音频时长,音频常用格式如 m4a,wav等。 安装 python 库: pip install pydub 获取 m4a 格式的音频时长代码如下,代码如下: #-*-coding:utf-8-*- # date:2024-10 # Author: DataBall - XIAN #…

【云效】阿里云云效:一站式DevOps平台介绍与使用教程(图文)附PPT

【云效】阿里云云效:一站式DevOps平台介绍与使用教程(图文) 云效费用企业管理项目协作代码管理自动流水线测试管理扩展资料附:PPT版文件下载参考资料: https://devops.aliyun.com/ 云效 阿里云一站式DevOps(持续交付)平台,项目数字化协作能效工具。 官方介绍: 云效,一…

bindService 流程学习总结

Context.bindServiceContextImpl.bindServiceCommonActivityManagerService.bindIsolatedService ActiveServices.bindIsolatedServiceretrieveServiceLocked 获取服务信息;bringUpServiceLocked 拉起服务startProcessLocked创建进程 (进程不存在时)realStartServi…

【Android】MVP架构

MVP架构简介 MVP(Model-View-Presenter)是一种常见的软件架构模式,尤其在Android应用开发中被广泛使用。它将应用程序分为三层:Model、View 和 Presenter,以实现职责分离,提高代码的可维护性和可测试性。 …

ant design vue树选择器实现部分层级禁用(指定层级或依据字段判断)

1、依据字段判断是否禁用 const handData (array, level?) > {array.forEach((item) > {if (level 0) {//获取一级菜单item.title item.levelName;item.value item.code;if (item.type LAYER) {item.disabled true;} else if (item.type JOB) {item.disabled f…

分享几个办公类常用的AI工具

办公类 WPS AI讯飞智文iSlideProcessOn亿图脑图ChatPPT WPS AI 金山办公推出的协同办公 AI 应用,具有文本生成、多轮对话、润色改写等多种功能,可以辅助用户进行文档编辑、表格处理、演示文稿制作等办公操作。 https://ai.wps.cn/ 讯飞智文 科大讯飞推…

OceanBase 首席科学家阳振坤:大模型时代的数据库思考

2024年 OceanBase 年度大会 即将于10月23日,在北京举行。 欢迎到现场了解更多“SQL AI ” 的探讨与分享! 近期,2024年金融业数据库技术大会在北京圆满举行,聚焦“大模型时代下数据库的创新发展”议题,汇聚了国内外众多…

85.【C语言】数据结构之顺序表的中间插入和删除及遍历查找

目录 3.操作顺序表 1.分析中间插入函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLInsert函数的声明 运行结果 2.分析中间删除函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLErase函数的声明 运行结果 承接84.【C语…

前端开发:Vue中数据绑定原理

Vue 中最大的一个特征就是数据的双向绑定,而这种双向绑定的形式,一方面表现在元数据与衍生数据之间的响应,另一方面表现在元数据与视图之间的响应,而这些响应的实现方式,依赖的是数据链,因此,要…

未来汽车驾驶还会有趣吗?车辆动力学系统简史

未来汽车驾驶还会有趣吗?车辆动力学系统简史 本篇文章来源:Schmidt, F., Knig, L. (2020). Will driving still be fun in the future? Vehicle dynamics systems through the ages. In: Pfeffer, P. (eds) 10th International Munich Chassis Symposiu…

量子纠错--shor‘s 码

定理1 (量子纠错的条件) C是一组量子编码,P是映射到C上的投影算子。假设是一个算子元素描述的量子操作,那么基于量子编码C,存在一个能对抗描述的噪声的纠错操作R的充要条件是 对某个复元素厄米矩阵成立。 将算子元素称为导致的错误。如果这样…

【大模型实战篇】大模型分词算法Unigram及代码示例

1. 算法原理介绍 与 BPE 分词(参考《BPE原理及代码示例》)和 WordPiece 分词(参考《WordPiece原理及代码示例》)不同,Unigram 分词方法【1】是从一个包含足够多字符串或词元的初始集合开始,迭代地删除其中的…

WPF+MVVM案例实战(四)- 自定义GroupBox边框样式实现

文章目录 1、项目准备2、功能实现1、EnviromentModel.cs 代码2、GroubBoxViewModel.cs 代码实现3、ViewModelLocator.cs 依赖注入4、GroubBoxWindow.xaml 样式布局5、数据绑定 3、效果展示4、资源获取 1、项目准备 打开项目 Wpf_Examples,新建 GroubBoxWindow.xaml…