用Django写的一个小影视网站

网站入口页面
在这里插入图片描述

在这里插入图片描述

1.当用户登录时,用户需输入正确的信息,包含身份证、密码、以及验证码(验证码在看不清的情况下可以手动刷新),当三个信息完全正确时,自动向推荐主页跳转,用户忘记密码时可以在重置密码的页面进行核对信息后就能修改密码,同时该页面可以跳转到修改密码和注册用户界面,进行相应操作。
当用户注册时,需要用户提供身份证号、用户名、密码、性别和密保,密保主要用于用户在忘记密码的时候可以进行找回,并进行修改。

#代码太多我也就选择性附代码了
# 验证码生成函数
def verification_code():
    list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
            'v', 'w', 'x', 'y', 'z',
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
            'V', 'W', 'X', 'Y', 'Z']

    data = ''
    for i in range(4):
        data += random.choice(list)
    image = ImageCaptcha().generate_image(data)
    # image.show()#展示图片
    image.save('G:\Python学习\前端\Diango\影视\static\imges\code.png')
    return data

# 判断用户输入的验证码与生成的验证码是否相同,判断字符中英文
def code_identify(code_data,code):
    count = []
    # 判断长度
    if len(code) != 4:
        return False

    # 长度正确,判断是否相等
    for co in range(len(code)):
        # 判断是否是英文

        if int(ord(code_data[co])) in range(97, 123) or int(ord(code_data[co])) in range(65, 91):
            if ord(code_data[co]) == ord(code[co]) or abs(ord(code_data[co]) - ord(code[co])) == 32:

                # 1是相等,0是不等
                count.append("1")


        else:
            # 是数字的时候
            if code_data[co] == code[co]:

                count.append("1")
    if len(count) == 4:
        return True
    return False

在这里插入图片描述

2.个人主页界面包含了用户头像、个人信息、观看记录、历史观看数量图表等信息,观看记录包含了用户所有的观看作品,历史观看数据图表显示了该用户在近一周每天的观看影视数量,实时记录用户的观看数量

在这里插入图片描述
3.主页显示对应影视类型的作品图片和名字,每一个作品都可以点击进入该作品的详情页。(注明:这里的顶部地球视频,是我在微博下载的,如果有侵权,联系我删除即可)
在这里插入图片描述
4.在影视的详情页面,用户还能对该作品进行评级收藏,也可以进行播放,点击后会直接跳转到爱奇艺的播放页面进行播放。

在这里插入图片描述
5.模块的接口在推荐主页的菜单栏上,点击进入后会立即进行获取当前时间的热度数据,通过数据处理模块处理后返回到前端页面进行显示给用户,且每个作品都可以呈现出自己的热度和点击观看(这里diamante涉及到spider代码,就不展示)

在这里插入图片描述
6.搜索模块,可根据输入的电影名在数据库搜索相关的电影进行展示

7.数据库的表(因为实在太多数据,也集选择常见的几个数据大类来做)

#这里只放了三个表
from django.db import models
# Create your models here.
# 用户表
class User(models.Model):
    user_name = models.CharField(max_length=256)
    user_idcard = models.CharField(max_length=256)
    user_passwd = models.CharField(max_length=256)
    user_sex = models.CharField(max_length=256)
    user_passwd_produce = models.CharField(max_length=256)
    # 拿出来加在后面,最好是限制长度,超过一定的个数取代后面的
    user_watched_tv = models.CharField(max_length=2000)

    # 方便后续的item运算
    user_collect_Movies = models.CharField(max_length=2500)
    user_collect_Comic = models.CharField(max_length=2500)
    user_collect_Tv = models.CharField(max_length=2500)
    user_collect_Child = models.CharField(max_length=2500)
    user_collect_Documentary = models.CharField(max_length=2500)
    user_collect_Var_show = models.CharField(max_length=2500)


# 电影表
class Movies(models.Model):
    # 网址
    url = models.CharField(max_length=256)
    # 名字
    name = models.CharField(max_length=256)
    # 描述(文本)
    description = models.TextField(max_length=2000)
    # 类型
    type = models.CharField(max_length=256)
    # acter
    acter = models.CharField(max_length=256)
    # 上映时间
    period = models.CharField(max_length=256)
    # 图片网址
    imageUrl = models.CharField(max_length=256)
    # 评分
    score = models.CharField(max_length=256)
    # 时长
    duration = models.CharField(max_length=256)
    # 重点(文本)
    focus = models.TextField(max_length=2000)
    # 集数
    latestOrder = models.CharField(max_length=256)

# 动漫表
class Comic(models.Model):
    # 网址
    url = models.CharField(max_length=256)
    # 名字
    name = models.CharField(max_length=256)
    # 描述(文本)
    description = models.TextField(max_length=2000)
    # 类型
    type = models.CharField(max_length=256)
    # acter
    acter = models.CharField(max_length=256)
    # 上映时间
    period = models.CharField(max_length=256)
    # 图片网址
    imageUrl = models.CharField(max_length=256)
    # 评分
    score = models.CharField(max_length=256)
    # 时长
    duration = models.CharField(max_length=256)
    # 重点(文本)
    focus = models.TextField(max_length=2000)
    latestOrder = models.CharField(max_length=256)

8.删除用户收藏的作品(当时时间急,也就没想用一个函数解决了,然后就重复了很多代码)


#删除当前用户收藏的该作品
def cut_this_pro_collect(id,big_type):

    if big_type == "电影":
        online = models.User.objects.filter(id=online_user_id).first()
        this_online_collect_list = online.user_collect_Movies.split(" ")
        for index,i in enumerate(this_online_collect_list[1:]):
            i = i[1:-1].split(',')[0]
            if int(i) == int(id):
                this_online_collect_list.pop(index+1)#删除元素

        online_co = ' '.join(this_online_collect_list)#合并当前列表

        models.User.objects.filter(id=online_user_id).update(user_collect_Movies=online_co)
    if big_type == "电视剧":
        online = models.User.objects.filter(id=online_user_id).first()
        this_online_collect_list = online.user_collect_Tv.split(" ")
        for index, i in enumerate(this_online_collect_list[1:]):
            i = i[1:-1].split(',')[0]
            if int(i) == int(id):
                this_online_collect_list.pop(index)  # 删除元素
        online_co = ' '.join(this_online_collect_list)  # 合并当前列表
        models.User.objects.filter(id=online_user_id).update(user_collect_Tv=online_co)
    if big_type == "动漫":
        online = models.User.objects.filter(id=online_user_id).first()

        this_online_collect_list = online.user_collect_Comic.split(" ")
        for index, i in enumerate(this_online_collect_list[1:]):
            i = i[1:-1].split(',')[0]
            if int(i) == int(id):
                this_online_collect_list.pop(index)  # 删除元素
        online_co = ' '.join(this_online_collect_list)  # 合并当前列表
        models.User.objects.filter(id=online_user_id).update(user_collect_Comic=online_co)
    if big_type == "综艺":
        online = models.User.objects.filter(id=online_user_id).first()

        this_online_collect_list = online.user_collect_Var_show.split(" ")
        for index, i in enumerate(this_online_collect_list[1:]):
            i = i[1:-1].split(',')[0]
            if int(i) == int(id):
                this_online_collect_list.pop(index)  # 删除元素
        online_co = ' '.join(this_online_collect_list)  # 合并当前列表
        models.User.objects.filter(id=online_user_id).update(user_collect_Var_show=online_co)
    if big_type == "纪录片":
        online = models.User.objects.filter(id=online_user_id).first()
        this_online_collect_list = online.user_collect_Documentary.split(" ")
        for index, i in enumerate(this_online_collect_list[1:]):
            i = i[1:-1].split(',')[0]
            if int(i) == int(id):
                this_online_collect_list.pop(index)  # 删除元素
        online_co = ' '.join(this_online_collect_list)  # 合并当前列表
        models.User.objects.filter(id=online_user_id).update(user_collect_Documentary=online_co)
    if big_type == "少儿":
        online = models.User.objects.filter(id=online_user_id).first()
        this_online_collect_list = online.user_collect_Child.split(" ")
        for index, i in enumerate(this_online_collect_list[1:]):
            i = i[1:-1].split(',')[0]
            if int(i) == int(id):
                this_online_collect_list.pop(index)  # 删除元素
        online_co = ' '.join(this_online_collect_list)  # 合并当前列表
        models.User.objects.filter(id=online_user_id).update(user_wcollect_Child=online_co)
    if big_type == None:
        pass


9.最后一个是一个比较草率的可视化,就简单借用了echarts(大家可以忽略),里面用的是一些实时spider
在这里插入图片描述

环境:Python3.8、Django
最后,本作品只是自己无聊,学习之余写的代码,其中的数据无商用,只是用来学习,本人道行尚欠,可以改进的地方,希望大佬指点,如果感兴趣的小伙伴也可以私信我讨论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值