# 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
#### 项目截图:


#### 安装教程
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/)