python4-1 django框架v5.0第4节 django入门之Django介绍

1. 简介

Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计。劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在BSD许可证下发布。这个名称来源于比利时的爵士音乐家DjangoReinhardt,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SDTimes评选为2013SDTimes100,位列"API、库和框架"分类第6位,被认为是该领域的佼佼者。

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原则。

2. 特点

1) 重量级框架

对比Flask框架,Django原生提供了众多的功能组件,让开发更简便快速。

  • 提供项目工程管理的自动化脚本工具

  • 数据库ORM支持(对象关系映射,英语:Object Relational Mapping)

  • 模板

  • 表单

  • Admin管理站点

  • 文件管理

  • 认证权限

  • session机制

  • 缓存

2)MVT模式

有一种程序设计模式叫MVC,其核心思想是分工、解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容。

MVC的全拼为Model-View-Controller,最早由TrygveReenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式,是为了将传统的输入(input)、处理(processing)、输出(output)任务运用到图形化用户交互模型中而设计的。随着标准输入输出设备的出现,开发人员只需要将精力集中在业务逻辑的分析与实现上。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。现在虽然不再使用原来的分工方式,但是这种分工的思想被沿用下来,广泛应用于软件工程中,是一种典型并且应用广泛的软件架构模式。后来,MVC的思想被应用在了Web开发方面,被称为Web MVC框架。

MVC模式说明

  • M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。

  • V全拼为View,用于封装结果,生成页面展示的html内容。

  • C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。

Django的MVT

  • M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。

  • V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。

  • T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。

注:差异就在于黑线黑箭头标识出来的部分

3. Django学习资料

  • 官方网站:https://www.djangoproject.com/

  • Github源码:https://github.com/django/django

  • 1.11版英文文档:https://docs.djangoproject.com/en/1.11/

  • 1.11版中文文档:https://yiyibooks.cn/xx/Django_1.11.6/index.html

  • Django Book 教程:http://djangobook.com/

  • Tange With Django 教程:http://www.tangowithdjango.com/book17/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
由于商品推荐系统是一个较为复杂的系统,需要综合使用多种算法,包括协同过滤、内容过滤、深度学习等,因此代码实现会比较复杂。在这里,我可以给你提供一种基于协同过滤算法的商品推荐系统推荐功能实现代码示例,供你参考。 首先,我们需要构建一个用户-商品评分矩阵,用于描述用户对商品的评分情况。假设我们的数据表格如下: | 用户ID | 商品ID | 评分 | |--------|--------|------| | 1 | 100 | 4.5 | | 1 | 101 | 3.0 | | 2 | 100 | 5.0 | | 2 | 102 | 4.5 | | 3 | 101 | 2.0 | | 3 | 103 | 4.0 | 首先,我们需要将评分矩阵转换为用户-商品评分矩阵,即将行转换为用户、列转换为商品,得到以下矩阵: | | 100 | 101 | 102 | 103 | |------|-----|-----|-----|-----| | 1 | 4.5 | 3.0 | 0 | 0 | | 2 | 5.0 | 0 | 4.5 | 0 | | 3 | 0 | 2.0 | 0 | 4.0 | 接下来,我们可以使用基于用户的协同过滤算法,来计算当前用户与其他用户的相似度,从而推荐相似用户喜欢的商品。 以下是一个基于Python、MySQL、Django框架的协同过滤算法实现代码示例: ```python import numpy as np import pandas as pd def similarity(user1, user2, data): """ 计算两个用户之间的相似度 """ user1_data = data[user1] user2_data = data[user2] # 找到两个用户都评价过的商品 common_items = [item for item in user1_data if item in user2_data] # 如果没有共同评价过的商品,则相似度为0 if len(common_items) == 0: return 0 # 计算两个用户共同评价过的商品的评分的平方和 sum_of_squares = sum([pow(user1_data[item] - user2_data[item], 2) for item in common_items]) # 返回两个用户之间的相似度 return 1 / (1 + np.sqrt(sum_of_squares)) def recommend(user, data, K=3): """ 推荐商品给指定的用户 """ # 找到与指定用户相似度最高的K个用户 similarities = [(other_user, similarity(user, other_user, data)) for other_user in data if other_user != user] similarities.sort(key=lambda x: x[1], reverse=True) # 构建一个字典,用于存储推荐商品及其预测评分值 recommendation_dict = {} # 遍历与指定用户相似度最高的K个用户,计算推荐商品及其预测评分值 for i in range(K): other_user = similarities[i][0] similarity_score = similarities[i][1] for item in data[other_user]: # 如果指定用户已经评价过该商品,则跳过 if item in data[user]: continue # 计算推荐商品的预测评分值 if item not in recommendation_dict: recommendation_dict[item] = 0 recommendation_dict[item] += data[other_user][item] * similarity_score # 将推荐商品及其预测评分值排序,并返回前N个商品作为推荐结果 recommendations = sorted(recommendation_dict.items(), key=lambda x: x[1], reverse=True)[:N] return recommendations ``` 使用以上代码,即可实现基于协同过滤算法的商品推荐功能。需要注意的是,以上代码只是一个简单的示例,实际的商品推荐系统还需要综合使用多种算法,并进行更加复杂的数据处理和模型优化,才能达到较好的推荐效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zz77244920

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值