# album **Repository Path**: xiaobai_long/album ## Basic Information - **Project Name**: album - **Description**: Django搭建网络相册 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-01-03 - **Last Updated**: 2023-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, Django, oss ## README # album #### 介绍 Django搭建网络相册: * 环境:Mac + Django3.2.5 + PyMySQL 1.0.2 #### 项目截图: ![img.png](img.png) ![img_1.png](img_1.png) #### 安装教程 1. pip install -r requirements.txt 2. xxxx 3. xxxx #### 使用说明 ### 项目介绍 ### 涉及知识点: ### 1. MTV 模式-模型(Model)、模板(Template)、视图(Views): * 模型(Model),数据层,处理与数据相关的所有事务:如何存取、如何验证有效性、数据之间的关系等。 * 模板(Template),表现层,处理与表现相关的事务,即数据如何在页面中进行显示。 * 视图(View),逻辑层,存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。 ### 2. 模板逻辑语法:{% .. %} ### 3. 模态与动画: * 模态窗:是指平铺在页面上的一个窗口,并且带有背景遮罩的效果。 * data-bs-toggle 属性: 指定当前元素为模态窗。 * data-bs-tatget 的值要严格对应模态窗的id 值。Bootstrap 依据此来链接多个按钮和模态窗的映射关系. * 静态文件存放路径-setting.py: * STATIC_URL = '/static/' # 新增 STATICFILES_DIRS = ( BASE_DIR / 'static', ) * 注册路由-urls.py: * urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) * 静态文件引入-base.html: * {% load static %}: 载入静态文件相关的全局配置 :载入此css文件的实际地址 * 鼠标悬浮效果:在元素标签里加 class="hvr-float-shadow" ### 4. 登录与登出。 ### 5. 批量上传文件: ```` action="{% url 'photo:upload' %}": 指定此表单提交的路径。再次注意看它是如何和 url 路径的名称对应的。 method="post": 说明这是个 POST 请求的表单。 enctype="multipart/form-data": 指定表单的编码方式(将文件以二进制上传),必须有它才能正常上传文件。 再看 标签里: type="file": 表示这是个文件上传控件。 name="images": 注意它要和后端代码的 .getlist('images') 的参数对应。 multiple="multiple": 表示支持多文件上传。 accept="image/*": 文件类型为图片。 ```` ### 6. 分页: * 分页器-Paginator: * 将模型的查询集 photos 、以及你期望的每页的图片数量作为参数,实例化分页器 Paginator。 * 从 GET 请求体中获取页码。 * 根据页码,从分页器中取得对应页码的对象。 * 将分页后的对象传递到模板。 * 前端-分页对象: * 分页后的对象 photos 拥有 previous_page_number 、 number 、 has_previous 等一系列有关分页的属性。 * 超链接用 href="?page={{ photos.next_page_number }}" 给 GET 请求附加了数据,它在后端中通过 request.GET.get('page') 被获取到。 ### 7. 云存储: 1. 个人服务器,宽带问题解决方案:CDN加速、负载均衡、对象存储等。 2.对象存储OSS(Object Storage): 是一种海量、安全、低成本、高持久的云存储服务,你可以将其作为移动应用、大型网站、图片分享或 热点音视频的主要存储方式。通俗点讲就类似云端硬盘,它的带宽资源充足、数据丢失的可能性几乎为零。并且对于小流量的网站来说, OSS 所需的费用开销非常少。 3. 常见的云服务商: OSS 服务-阿里云、腾讯云、百度云,也有专门做 OSS 起家的七牛云、又拍云等等。 4. OSS 的软件开发工具包(SDK):pip install oss2==2.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple ### 8.无限滚动: 1. 无限滚动是指每当页面滑动到底部时,下一页的数据将自动被获取、并填充到页面底部。这样做的好处是省去了用户手动点击页码翻页的动作, 这在移动端的体验提升是比较明显的。无限滚动是指每当页面滑动到底部时,下一页的数据将自动被获取、并填充到页面底部。这样做的好处是省去了 用户手动点击页码翻页的动作,这在移动端的体验提升是比较明显的。 2. 无限滚动的重点在于不重载整个页面的情况下,对网页进行部分更新,这种技术被称为 AJAX(Asynchronous JavaScript and XML)。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)