# 基于Django的电影推荐系统的设计与实现 **Repository Path**: calfhead_admin/django-movieRecommended ## Basic Information - **Project Name**: 基于Django的电影推荐系统的设计与实现 - **Description**: 使用基于物品的协同过滤和基于热度的推荐算法来完成电影推荐 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2021-05-18 - **Last Updated**: 2021-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于Django的电影推荐系统的设计与实现 #### 介绍 项目选择了Django来作为电影推荐系统的开发框架,并采用了MTV的框架模式,这使得Django的各模块之间结合得比较紧密。 项目主要分为了用户系统的登陆注册模块、个人中心模块、电影推荐模块、电影详情模块、后台管理模块五个主要的功能模块, 完成了用户登陆注册、个人信息修改、历史浏览、电影收藏、评论等个性化的功能。 系统可以通过收集用户对电影评分,并利用Item-CF和基于热度的算法来完成了对用户的电影个性化推荐,在原始的电影评分数据集采用了MovieLens 100K的数据集,以此来提高用户的推荐效率。 #### 软件架构 本项目采用了Django框架的MTV架构, 开发环境:Django2.0.1、python3.6、mysql5.6、html+css+js 项目的第三方库 Package version remark APScheduler 3.6.3 定时任务框架 Django 2.0.1 web框架 MarkupPy 1.14 可自定义的HTML / XML生成器 Pillow 6.2.1 图像处理标准库 PyMySQL 0.9.3 连接 MySQL 的标准库 PyYAML 5.2 用于解析和编码 YAML 文件的程序包 asgiref 3.2.3 异步Web应用程序和服务器相互通信的标准 certifi 2019.11.28 验证SSL证书的可靠性 chardet 3.0.4 编码识别模块 defusedxml 0.6.0 解析不受信任的XML数据的任何服务器代码 diff-match-patch 20181111 文本的对比功能 Django-pure-pagination 0.3.0 分页功能插件 Django-ranged-response 0.2.0 把文件响应到浏览器 Django-simple-captcha 0.5.13 验证码插件 et-xmlfile 1.0.1 创建大型XML文件的低内存库 idna 2.8 应用程序中的国际化域名 jdcal 1.4.1 日期与日历日期之间转换的功能 Mysqlclient 1.4.6 MySQLdbl的分支,与数据库通信的模块 Numpy 1.18.1 Python进行科学计算的基本软件包 odfpy 1.4.0 用于读写OpenDocument 1.2文件的库 openpyxl 3.0.2 第三方excel操作库 Pandas` 1.0.2 数据分析包 pip 19.3.1 安装管理 Python 包的工具 Python-dateutil 2.8.1 将字符串转换为日期格式 Pytz 2019.3 用于时区的转换 Requests 2.22.0 处理URL资源 Setuptools 42.0.2 Python包管理工具 Sqlparse 0.3.0 Python的一个解析SQL语言的库 Tablib 0.14.0 操作 Excel 的一个库 Tzlocal 2.0.0 在Unix和Win-32下返回带有本地时区信息的tzinfo对象 Urlib3 1.25.7 用于网络请求的库 Wheel 0.33.6 setuptools的基础包,用于处理Wheel文件的命令行工具 Xlrd 1.2.0 读取Excel的扩展工具 Xlwt 1.3.0 写入Excel的扩展工具 Xadmin 2.0 后台管理系统 把xadmin包安装在项目的extra_apps文件内,利用pip安装了xadmin后后卸载xadmin, 这里需要xadmin的依赖包,但项目是用xadmin的源码实现后台系统。 其中下xadmin的依赖项为:django-crispy-forms、django-import-export、 django-reversion、django-formtools、future、httplib2、Six。 xadmin的依赖项 Package version remark django-crispy-forms 1.8.1 美化form页面 Django-import-export 2.0 用于处理导入和导出数据的库 Django-reversion 0.2.0 DjangoWeb框架的扩展 Django-formtools 2.2 用于表单预览和多步骤表单 Future 0.18.2 解决python版本不兼容问题 Httplib2 0.9.2 HTTP和HTTPS的客户端协议 Six 1.13.0 用来兼容 Python 2和 Python 3的库 前端插件:uploadPreview(头像上传预览)、layDate(日历插件)、font-awesome-4.7.0(字体图标库)、 html5shiv(h5兼任js库)、jquery-3.4.1(js框架)、bootstrap3(前端框架)、less( CSS 扩展语言) 开发工具:Pycharm、Navicat、Sublime Text3 解决Django使用xadmin的问题: (1)TypeError at /xadmin/ login() got an unexpected keyword argument 'current_app'错误 Exception Location: /home/wuchao/PycharmProjects/mxonline3/extra_apps/xadmin/views/website.py in get, line 66 解决方案:根据提示进入website,注释61行, 如:#'current_app': self.admin_site.name, (2)AttributeError at /xadmin/ 'Media' object has no attribute 'add_css' Exception Location: /home/wuchao/PycharmProjects/mxonline3/extra_apps/xadmin/util.py in vendor, line 94 解决方案:将util.py 中的86行 def vendor(*tags):方法体改为: css = {'screen': []} js = [] for tag in tags: file_type = tag.split('.')[-1] files = xstatic(tag) if file_type == 'js': js.extend(files) elif file_type == 'css': css['screen'] += files return Media(css=css, js=js) (3)AttributeError at /xadmin/xadmin/log/ 'DateTimeField' object has no attribute 'rel' Exception Location: /home/wuchao/PycharmProjects/mxonline3/extra_apps/xadmin/views/list.py in get_list_queryset, line 228 解决方案:修改 views/list.py 中228行 if isinstance(field.rel, models.ManyToOneRel): related_fields.append(field_name) 修改为: if isinstance(field.remote_field, models.ManyToOneRel): related_fields.append(field_name) 若继续报’rel’的错误,则根据Exception Location找到报错行,将field.rel修改为field.remote_field