个人电影网站小结(上)

时间:2021-07-19 00:55:44

第一步: 需求分析

需求:

做一个简单的电影网站,可以展示电影信息以及方便地下载

功能:

  1. 根据电影类型分类
  2. 根据电影所属地区分类
  3. 根据电影所属年代分类
  4. 根据上述条件进行组合查询
  5. 展示电影的图片,以及详细信息
  6. 展示电影的下载链接以及链接详情
  7. 可以以电影名字/演员名字作为关键字进行搜索
  8. 对电影展示结果进行分页
  9. 对网站进行数据添加 ( spider )

第二步: 设计数据模型

对下列项进行建模:

  1. 电影
  2. 演员
  3. 国家
  4. 类型
  5. 年代

电影为核心模型,国家和上映年份为其外键,类型和演员与其为多对多关系。

第三步 后台注册

第四步 编写前端页面

前端要点:

  1. 页面的固定与浮动 ( float/fixed )
  2. 块元素的并列显示 ( inline/inlineblock )
  3. 块元素的独立与继承 ( postion )
  4. 元素的优先级 ( z-index )
  5. 元素位置 ( padding border margin )
  6. 注意django静态文件的引用关系 相对引用与绝对引用

第五步 编写urls分发

  1. 单app应用,不必使用继承,注意传电影id给对应的电影
  2. 可以取名字方便前端查找

第六步 编写视图函数

1、首页展示

index 函数直接查询所有电影结果并返回即可

2、根据类型查找

解决思路:

从前端传一个当前点击的类型对象的值到后端,方法是利用GET请求时参数附加在url尾部的做法,然后根据传过来的参数,查找到所有此类型的电影返回前端。

3、根据国家地区查找

方法同上,查询其他的时候,可以用exclude + Q 查询

4、 根据年份查找

对年份进行分组新建列表,对具体的年份根据不同列表进行查询,对“其他”通过django_orm双下划线进行查询

5、 组合查询

思路:还是利用url带参数的特性进行参数组合,需要注意的是后端取到参数后,返回时应该返回同样名字的参数。

6、 展示电影详细信息

此步无难点,注意使用django自带的过滤器slice切片

7、展示电影下载链接 (难点)

此步个人认为最难

难点1:

链接的数量不定,可能只有1个,也可能有7,8个,因此不可能在模型里为数量不定的每个链接建一个field,而且那样也太臃肿丑陋。

解决方法: 对于链接和链接名字,不论数量,只建一个field储存,用逗号隔开,要使用时取出split。

难点2

要同时对链接信息和链接地址进行for循环,而模板语言中没有类似python zip之类的工具

解决方法:将链接名字和链接做成字典,将该字典传到前端,用 for key,value in dic.items完美解决问题!

8、搜索功能 (有难点)

查询不难,利用Q查询分别查询电影名和演员,再取或即可

难点

既可以点击图标进行查询,也可以用回车进行查询

解决思路:

回车查询可以直接用form表单提交的方式post提交
点击按钮查询可以使用jquery发ajax请求,也可以使用location.replace(url)直接跳转

9、对展示结果进行分页

使用pagehelper进行分页,需要注意的是要进行一定改造,添加3个参数并改造url,利用字符串格式化添加参数,硬编码会出错。

10、爬虫

见下 scrapy篇