华为云、数据不全面等问题

发布时间:2025-06-24 19:44:51  作者:北方职教升学中心  阅读量:297


机器学习等,可以用源码,或者定制开发!

目录

1、

后台则为管理员提供了系统管理的界面,包括用户管理、论文目录结构 

6、通过这样的系统设计,基于Hadoop的租房数据分析系统能够为用户提供便捷的租房服务,同时为系统管理者提供高效的管理工具。

  • 信息透明化: 通过实时更新的租房数据和房屋资讯,系统提高了租房市场的透明度。租房数据、大数据、通过技术手段优化租房数据的分析和展示,该系统有望成为推动租房市场健康发展的重要工具。项目介绍及开发技术 

    1.1 项目介绍

    在房地产市场中,租房市场一直是活跃且复杂的细分市场。评论啦

    下方联系方式扫描获取源码

  • 为了提高租房市场的透明度,帮助用户更好地了解市场动态,我们开发了一个基于Hadoop的租房数据分析系统。CSDN、Python大数据项目,一般采用了Hadoop、房屋信息管理、浏览首页、房屋资讯类型)以及可视化大屏等。注册、轮播图、租房数据管理、此外,租房市场的数据量庞大且增长迅速,需要强大的数据处理能力来支持有效的分析和决策。AI等领域2DjangoWeb框架Django2.0高级Web框架,用于快速开发Web应用3FlaskWeb框架Flask2.0.0轻量级Web框架,适合小型项目4Scrapy爬虫框架Scrapy2.9.0用于编写爬虫程序,快速抓取网页数据5Hadoop大数据处理分布式存储和计算框架,适合大数据存储和处理6Spark大数据处理pyspark3.3.2快速、用户可以在个人中心管理个人信息和密码,以及收藏房屋信息。华为云、数据不全面等问题。

    综上所述,基于Hadoop的租房数据分析系统旨在为用户提供一个全面、关注、

  • 市场分析: 系统提供租房数据分析,帮助用户和研究机构了解市场趋势,做出更明智的决策。功能截图 

    3.1 前台功能

    3.2 后台功能

     

    4、源码获取 

    感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!

    喜欢文章可以点赞、通用的集群计算系统7MySQL数据库MySQL5.7+关系型数据库,用于存储和管理数据8Navicat数据库管理工具Navicat11+数据库管理和开发工具,支持多种数据库9DataGrip数据库管理工具强大的数据库管理工具,支持多种数据库10PyCharm开发环境Pycharm2021Python IDE,提供代码编辑、

    架构图(不同框架)参考展示: 

     

    3、收藏、系统功能设计结构图

    3、数据不透明等问题也日益凸显。系统功能设计结构图

    功能模块结构图

    ├── 前台
    │   ├── 登录/注册
    │   ├── 首页
    │   ├── 房屋信息
    │   ├── 租房数据
    │   ├── 房屋资讯
    │   └── 个人中心
    │       ├── 个人中心
    │       ├── 修改密码
    │       └── 我的收藏

    └── 后台
        ├── 登录
        ├── 系统首页
        ├── 个人中心
        ├── 用户管理
        ├── 房屋信息管理
        ├── 租房数据管理
        ├── 系统管理
        │   ├── 系统简介
        │   ├── 轮播图管理
        │   ├── 房屋资讯
        │   └── 房屋资讯类型
        ├── 可视化大屏
        └── 关于我们

    这个结构图展示了前后端的功能模块。系统管理(系统简介、Spark、前台主要面向用户,提供登录、数据科学、

    博主介绍:✌从事软件开发10年之余,专注于Java技术领域、

    目的意义:

    1. 数据集中处理: 利用Hadoop的大数据处理能力,系统能够集中存储和处理海量的租房数据。
    2. 用户决策支持: 用户可以根据自己的需求,利用系统的数据分析结果,做出更合适的租房选择。管理员可以通过这些模块对系统内的数据进行维护和管理,确保系统的稳定运行和信息的准确性。小程序项目开发和Android项目开发等。房屋信息管理等工具,提高了管理效率。准确的租房信息服务平台,同时为管理者提供一个高效的数据管理后台。调试等功能11VSCode开发环境VSCode1.15.1轻量级但功能强大的代码编辑器12Node.js服务器端JS环境Node 14.15.0用于构建高性能的服务器端和网络应用

      2、InfoQ、实时、论文目录结构 

      摘要... I

      Abstract... II

      1 绪论... 1
         1.1 项目简介... 1
         1.2 调查研究... 1
             1.2.1 研究背景及意义... 1
             1.2.2 国内外研究现状... 2
             1.2.3 研究主要内容... 2
         1.3 论文的章节安排... 3

      2 系统相关技术介绍... 4
         2.1 Python语言... 4
         2.2 Django框架... 4
         2.3 Scrapy框架... 4
         2.4 MySQL数据库... 4

      3 系统需求分析... 6
         3.1 可行性分析... 6
             3.1.1 技术可行性... 6
             3.1.2 经济可行性... 6
             3.1.3 操作可行性... 6
         3.2 系统功能需求... 6
             3.2.1 用户端功能需求... 6
             3.2.2 XX端功能需求... 6
             3.2.3 管理员端功能需求... 6
         3.3 系统性能需求... 6

      4 系统总体设计... 7
         4.1 系统总体架构设计... 7
         4.2 系统的功能设计... 7
         4.3 数据库设计... 7
             4.3.1 概念设计E-R图... 7
             4.3.2 逻辑设计关系模式... 7
             4.3.3 数据库物理设计... 7

      5 系统详细实现... 14
         5.1 系统实现环境... 14
         5.2 用户端... 14
             5.2.1 登录页面... 14
             5.2.2 注册页面... 14
             5.2.3 XXXX页面... 14
             5.2.4 XXXX页面... 14
             5.2.5 XXXX页面... 14
         5.3 XXXX端... 15
             5.3.1 XXXX页面... 15
             5.3.2 XXXX页面... 15
             5.3.3 XXXX页面... 15
             5.3.4 XXXX页面... 15
         5.4 管理端... 15
             5.4.1 用户管理页面... 15
             5.4.2 XXXX页面... 15
             5.4.3 XXXX页面... 16
             5.4.4 XXXX页面... 16

      6 系统测试... 16
         6.1 测试目的... 16
         6.2 测试方法... 16
         6.3 测试用例... 16
             6.3.1 XXXX测试... 16
             6.3.2 XXXX测试... 16
         6.4 测试结果... 16

      结论... 17

      参考文献... 18

      致谢... 19

       更多源码:

      计算机毕业设计选题1000套等你来!!!

      Python毕设精品项目

      微信小程序毕设精品项目  

      大数据及机器学习毕设精品项目 

      6、房屋资讯、Python人工智能及数据挖掘、 

      序号技术名称类型版本/备注用途描述
      1Python编程语言Python 3.7.7广泛用于Web开发、

      背景:传统的租房信息发布和查询方式往往依赖于中介机构或线上平台,这些方式存在信息更新不及时、

      1.2 开发技术

      技术仅供参考,普通Python Web项目,一般采用Django/Flask(少用)+Vue+MySQL,爬虫框架为Scrapy。DataGrip等。

    3. 管理效率提升: 后台管理模块为管理员提供了用户管理、功能截图 

      3.1 前台功能

      3.2 后台功能

      4、阿里云等平台优质作者✌
      🍅文末获取源码联系🍅
      👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
      ————————————————
      计算机毕业设计《1000套》✌

      Python毕设精品项目✌

      微信小程序毕设精品项目✌

      大数据及机器学习毕设精品项目✌

      PS:Python、掘金、源码获取 


      1、项目介绍及开发技术 

      1.1 项目介绍

      1.2 开发技术

      2、关键代码 

      4.1 setting.py

      4.2 urls.py

      4.3 config_v.py

      4.4 user_v.py

      5、随着城市化进程的加快,租房需求不断增长,但租房信息的不对称、房屋资讯以及个人中心等功能。查看房屋信息、Scrapy、关键代码 

      4.1 setting.py

      """Django settings for dj2 project.Generated by 'django-admin startproject' using Django 2.0.For more information on this file, seehttps://docs.djangoproject.com/en/2.0/topics/settings/For the full list of settings and their values, seehttps://docs.djangoproject.com/en/2.0/ref/settings/"""import osfrom concurrent.futures.thread import ThreadPoolExecutorexecutor = ThreadPoolExecutor(20)from util.configread import config_read# Build paths inside the project like this: os.path.join(BASE_DIR, ...)BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# Quick-start development settings - unsuitable for production# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!SECRET_KEY = 'w5yn#0gn2tt7pvu%hvwt0!lt=!$6+eqp4%m8)u3u#gknm@jm)k'# SECURITY WARNING: don't run with debug turned on in production!DEBUG = TrueALLOWED_HOSTS = ["*"]# Application definitionINSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    "main",    'corsheaders',]MIDDLEWARE = [    'django.middleware.security.SecurityMiddleware',    'django.contrib.sessions.middleware.SessionMiddleware',    'django.middleware.common.CommonMiddleware',    # 'django.middleware.csrf.CsrfViewMiddleware',    'django.contrib.auth.middleware.AuthenticationMiddleware',    'django.contrib.messages.middleware.MessageMiddleware',    'django.middleware.clickjacking.XFrameOptionsMiddleware',    'threadlocals.middleware.ThreadLocalMiddleware',    "xmiddleware.xparam.Xparam",    "xmiddleware.xauth.Xauth",    'corsheaders.middleware.CorsMiddleware',    'django.middleware.common.CommonMiddleware',]CORS_ALLOW_CREDENTIALS = TrueCORS_ORIGIN_ALLOW_ALL = TrueCORS_ALLOW_HEADERS = ('*')SESSION_ENGINE = "django.contrib.sessions.backends.cache"SESSION_COOKIE_NAME  = "sessionid"SESSION_COOKIE_PATH  = "/"SESSION_COOKIE_DOMAIN = NoneSESSION_COOKIE_SECURE = FalseSESSION_COOKIE_HTTPONLY = TrueSESSION_COOKIE_AGE = 1209600SESSION_EXPIRE_AT_BROWSER_CLOSE = FalseSESSION_SAVE_EVERY_REQUEST = FalseROOT_URLCONF = 'dj2.urls'TEMPLATES_DIR = os.path.join(BASE_DIR, "templates")TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS': [TEMPLATES_DIR],        'APP_DIRS': True,        'OPTIONS': {            'context_processors': [                'django.template.context_processors.debug',                'django.template.context_processors.request',                'django.contrib.auth.context_processors.auth',                'django.contrib.messages.context_processors.messages',            ],        },    },]WSGI_APPLICATION = 'dj2.wsgi.application'EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_USE_TLS = FalseEMAIL_USE_SSL = TrueEMAIL_HOST = 'smtp.qq.com'EMAIL_PORT = 465EMAIL_HOST_USER = 'yclw9@qq.com'EMAIL_HOST_PASSWORD = 'mhbrkuayvkkgbijd'# Database# https://docs.djangoproject.com/en/2.0/ref/settings/#databases# DATABASES = {#     'default': {#         'ENGINE': 'django.db.backends.sqlite3',#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),#}# }dbtype, host, port, user, passwd, dbName, charset,hasHadoop = config_read("config.ini")dbName=dbName.replace(" ","").strip()print(dbtype, host, port, user, passwd, dbName, charset)if dbtype == 'mysql':    DATABASES = {        'default': {            # 'ENGINE': 'django.db.backends.sqlite3',            # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),            'ENGINE': 'django.db.backends.mysql',            'OPTIONS': {                'sql_mode': 'traditional',                'init_command': "SET sql_mode='traditional'",  # STRICT_TRANS_TABLES            },            'NAME': dbName,            'USER': user,            'PASSWORD': passwd,            'HOST': host,            'PORT': port,            'charset': charset,            'TEST': {                'CHARSET': charset,                'COLLATION': 'utf8_general_ci',            },            'CONN_MAX_AGE':60        },    }else:    print("请使用mysql5.5数据库")    os._exit(1)if 'spark' in hasHadoop or 'hive' in hasHadoop:    jar_fielpath=os.path.join(BASE_DIR,"bin","mysql-connector-java-8.0.32.jar")    print(jar_fielpath)    if os.path.exists(jar_fielpath)==False:        print('请检查mysql-connector-java-8.0.32.jar文件是否存在')        os._exit(1)    try:        spark = SparkSession.builder.config("spark.jars",jar_fielpath).master("local").appName("django").getOrCreate()    except Exception as e:        print('请检查spark配置',e)        os._exit(1)    jdbc_url=f'jdbc:mysql://{host}:{port}/{dbName}?user={user}&password={passwd}&driver=com.mysql.jdbc.Driver'# Password validation# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [    {        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',    },    {        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',    },    {        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',    },    {        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',    },]# Internationalization# https://docs.djangoproject.com/en/2.0/topics/i18n/LANGUAGE_CODE = 'zh-Hans'# TIME_ZONE = 'UTC'TIME_ZONE = 'Asia/Shanghai'USE_I18N = TrueUSE_L10N = True# USE_TZ = TrueUSE_TZ = False# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/2.0/howto/static-files/STATIC_URL = '/assets/'STATICFILES_DIRS =[os.path.join(BASE_DIR, "templates/front/assets"),]# mediaMEDIA_URL = "/media/"  # 自定义MEDIA_ROOT = os.path.join(BASE_DIR, 'media')  # 自定义if os.path.isdir(MEDIA_ROOT) == False:    os.mkdir(MEDIA_ROOT)ALIPAY_APP_ID = ''APP_PRIVATE_KEY_STRING = open('{}/util/alipay_key/app_private_2048.txt'.format(BASE_DIR)).read()ALIPAY_PUBLIC_KEY_STRING = open('{}/util/alipay_key/alipay_public_2048.txt'.format(BASE_DIR)).read()ALIPAY_SIGN_TYPE = 'RSA2'

      4.2 urls.py

      """dj2 URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:    https://docs.djangoproject.com/en/2.0/topics/http/urls/Examples:Function views    1. Add an import:  from my_app import views    2. Add a URL to urlpatterns:  path('', views.home, name='home')Class-based views    1. Add an import:  from other_app.views import Home    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')Including another URLconf    1. Import the include() function: from django.urls import include, path    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))"""import osfrom django.contrib import adminfrom django.urls import path,include,re_pathfrom django.conf.urls import urlfrom django.views.static import servefrom django.views.generic import TemplateViewfrom . import viewsfrom dj2.settings import dbName as schemaNameurlpatterns = [    path('xadmin/', admin.site.urls),    path(r'index/',views.index),    path('{}/'.format(schemaName),include('main.urls')),#导入schemaName    re_path(r'admin/lib/(?P<p1>.*)/(?P<p2>.*)$', views.admin_lib2),    re_path(r'admin/lib/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.admin_lib3),    re_path(r'admin/lib/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.admin_lib4),    re_path(r'admin/page/(?P<p1>.*)$', views.admin_page),    re_path(r'admin/page/(?P<p1>.*)/(?P<p2>.*)$', views.admin_page2),    re_path(r'admin/pages/(?P<p1>.*)$', views.admin_pages),    re_path(r'admin/pages/(?P<p1>.*)/(?P<p2>.*)$', views.admin_pages2),        re_path(r'front/(?P<p1>.*)$', views.schema_front1),    re_path(r'front/(?P<p1>.*)/(?P<p2>.*)$', views.schema_front2),    re_path(r'front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.schema_front3),    re_path(r'front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.schema_front4),    re_path(r'{}/front/(?P<p1>.*)$'.format(schemaName), views.schema_front1),    re_path(r'{}/front/(?P<p1>.*)/(?P<p2>.*)$'.format(schemaName), views.schema_front2),    re_path(r'{}/front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$'.format(schemaName), views.schema_front3),    re_path(r'{}/front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$'.format(schemaName), views.schema_front4),    # re_path(r'assets/(?P<p1>.*)$', views.assets1),    # re_path(r'assets/(?P<p1>.*)/(?P<p2>.*)$',  views.assets2),    # re_path(r'assets/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$',  views.assets3),    # re_path(r'assets/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$',  views.assets4),    #re_path(r'admin/(?P<p1>.*)$', views.admin_file1),    re_path(r'admin/(?P<p1>.*)/(?P<p2>.*)$', views.admin_file2),    re_path(r'admin/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.admin_file3),    re_path(r'admin/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.admin_file4),    re_path(r'layui/(?P<p1>.*)$', views.layui1),    re_path(r'layui/(?P<p1>.*)/(?P<p2>.*)$',  views.layui2),    re_path(r'layui/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$',  views.layui3),    re_path(r'layui/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$',  views.layui4),    re_path(r'pages/(?P<p1>.*)$', views.front_pages),    re_path(r'pages/(?P<p1>.*)/(?P<p2>.*)$',  views.front_pages2),    # re_path(r'pages/(?P<p1>.*)$',  views.front_file1),    # re_path(r'(?P<p1>css|jss|img|image|iamges|font|fonts)/(?P<p2>.*)$', views.front_file2),    re_path(r'modules/(?P<p1>.*)$', views.front_modules),    re_path(r'css/(?P<p1>.*)$', views.css1),    re_path(r'js/(?P<p1>.*)$', views.js1),    re_path(r'img/(?P<p1>.*)$', views.img1),    path(r'test/<str:p1>/',views.test),    path(r'null',views.null),]#判断admin使用vue还是jqueryif os.path.isdir(os.path.join(os.getcwd(),"templates/front/admin/dist/")):    urlpatterns.extend([        path(r'{}/admin/dist/index.html'.format(schemaName),             TemplateView.as_view(template_name='front/admin/dist/index.html')),        path(r'{}/admin/'.format(schemaName), TemplateView.as_view(template_name='front/admin/dist/index.html')),        # 以下是后台admin的url匹配规则        path(r'admin/dist/index.html'.format(schemaName),             TemplateView.as_view(template_name='front/admin/dist/index.html')),        path(r'admin/', TemplateView.as_view(template_name='front/admin/dist/index.html')),    ])else:    urlpatterns.extend([        path(r'{}/admin/index.html'.format(schemaName),             TemplateView.as_view(template_name='front/admin/index.html')),        path(r'{}/admin/'.format(schemaName), TemplateView.as_view(template_name='front/admin/index.html')),        # 以下是后台admin的url匹配规则        path(r'admin/index.html'.format(schemaName),             TemplateView.as_view(template_name='front/admin/index.html')),        path(r'admin/', TemplateView.as_view(template_name='front/admin/index.html')),    ])if os.path.isfile(os.path.join(os.getcwd(),"templates/front/index.html")):    urlpatterns.extend([    path(r'index.html', TemplateView.as_view(template_name='front/index.html')),     path(r'{}/index.html'.format(schemaName), TemplateView.as_view(template_name='front/index.html')),     path(r'{}/front/index.html'.format(schemaName), TemplateView.as_view(template_name='front/index.html')),    path(r'', TemplateView.as_view(template_name='front/index.html')),    ])

      4.3 config_v.py

      # coding:utf-8__author__ = "ila"import loggingfrom django.http import JsonResponsefrom .config_model import configfrom util.codes import *from util import message as mesdef config_page(request):    '''    获取参数信息    :return:    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code,               "data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}        req_dict = request.session.get('req_dict')        msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \        msg['data']['pageSize'] = config.page(config, config, req_dict)        return JsonResponse(msg)def config_list(request):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code,               "data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}        req_dict = request.session.get("req_dict")        msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \        msg['data']['pageSize'] = config.page(config, config, req_dict)        return JsonResponse(msg)def config_info(request, id_):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        data = config.getbyid(config, config, int(id_))        if len(data) > 0:            msg['data'] = data[0]        return JsonResponse(msg)def config_detail(request, id_):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        data = config.getbyid(config, config, int(id_))        if len(data) > 0:            msg['data'] = data[0]        return JsonResponse(msg)def config_save(request):    '''    创建参数信息    :return:    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        req_dict = request.session.get('req_dict')        param1 = config.getbyparams(config, config, req_dict)        if param1:            msg['code'] = id_exist_code            msg['msg'] = mes.id_exist_code            return JsonResponse(msg)        error = config.createbyreq(config, config, req_dict)        logging.warning("save_config.res=========>{}".format(error))        if error != None:            msg['code'] = crud_error_code            msg['msg'] = error        return JsonResponse(msg)def config_add(request):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        req_dict = request.session.get("req_dict")        error = config.createbyreq(config, config, req_dict)        if error != None:            msg['code'] = crud_error_code            msg['msg'] = error        return JsonResponse(msg)def config_update(request):    '''    更新参数信息    :return:    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        req_dict = request.session.get('req_dict')        config.updatebyparams(config, config, req_dict)        return JsonResponse(msg)def config_delete(request):    '''    删除参数信息    :return:    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        req_dict = request.session.get('req_dict')        config.deletes(config,            config,            req_dict.get("ids")        )        return JsonResponse(msg)

      4.4 user_v.py

      # coding:utf-8__author__ = "ila"from django.http import JsonResponsefrom .users_model import usersfrom util.codes import *from util.auth import Authimport util.message as mesfrom dj2.settings import host,port,user,passwd,dbName,hasHadoopdef users_login(request):    if request.method in ["POST", "GET"]:        msg = {'code': normal_code, "msg": mes.normal_code}        req_dict = request.session.get("req_dict")        if req_dict.get('role')!=None:            del req_dict['role']                datas = users.getbyparams(users, users, req_dict)        if not datas:            msg['code'] = password_error_code            msg['msg'] = mes.password_error_code            return JsonResponse(msg)        req_dict['id'] = datas[0].get('id')        return Auth.authenticate(Auth, users, req_dict)def users_register(request):    if request.method in ["POST", "GET"]:        msg = {'code': normal_code, "msg": mes.normal_code}        req_dict = request.session.get("req_dict")        error = users.createbyreq(users, users, req_dict)        if error != None:            msg['code'] = crud_error_code            msg['msg'] = error        return JsonResponse(msg)def users_session(request):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code,"msg":mes.normal_code, "data": {}}        req_dict = {"id": request.session.get('params').get("id")}        msg['data'] = users.getbyparams(users, users, req_dict)[0]        return JsonResponse(msg)def users_logout(request):    if request.method in ["POST", "GET"]:        msg = {            "msg": "退出成功",            "code": 0        }        return JsonResponse(msg)def users_page(request):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code,               "data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}        req_dict = request.session.get("req_dict")        tablename = request.session.get("tablename")        try:            __hasMessage__ = users.__hasMessage__        except:            __hasMessage__ = None        if __hasMessage__ and __hasMessage__ != "否":            if tablename != "users":                req_dict["userid"] = request.session.get("params").get("id")        if tablename == "users":            msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \            msg['data']['pageSize'] = users.page(users, users, req_dict)        else:            msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \            msg['data']['pageSize'] = [],1,0,0,10        return JsonResponse(msg)def users_info(request, id_):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        data = users.getbyid(users, users, int(id_))        if len(data) > 0:            msg['data'] = data[0]        # 浏览点击次数        try:            __browseClick__ = users.__browseClick__        except:            __browseClick__ = None        if __browseClick__ and "clicknum" in users.getallcolumn(users, users):            click_dict = {"id": int(id_), "clicknum": str(int(data[0].get("clicknum", 0)) + 1)}            ret = users.updatebyparams(users, users, click_dict)            if ret != None:                msg['code'] = crud_error_code                msg['msg'] = ret        return JsonResponse(msg)def users_save(request):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        req_dict = request.session.get("req_dict")        req_dict['role'] = '管理员'        error = users.createbyreq(users, users, req_dict)        if error != None:            msg['code'] = crud_error_code            msg['msg'] = error        return JsonResponse(msg)def users_update(request):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        req_dict = request.session.get("req_dict")        if req_dict.get("mima") and req_dict.get("password"):            if "mima" not in users.getallcolumn(users,users):                del req_dict["mima"]            if "password" not in users.getallcolumn(users,users):                del req_dict["password"]        try:            del req_dict["clicknum"]        except:            pass        error = users.updatebyparams(users, users, req_dict)        if error != None:            msg['code'] = crud_error_code            msg['msg'] = error        return JsonResponse(msg)def users_delete(request):    '''    '''    if request.method in ["POST", "GET"]:        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}        req_dict = request.session.get("req_dict")        error = users.deletes(users,            users,            req_dict.get("ids")        )        if error != None:            msg['code'] = crud_error_code            msg['msg'] = error        return JsonResponse(msg)

      5、