Python学习笔记:7.4.4 Django快速建站 - 上传文件

本文是Python全栈工程师课程的Django笔记,重点介绍如何使用Django实现文件上传功能,包括上传视频和附件,以及在线播放视频和下载文件的详细步骤。内容涵盖模型字段设置、数据迁移、存储配置、模板修改等关键操作。
摘要由CSDN通过智能技术生成

前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!

一、课程目标
  • 实现上传文件功能
  • 播放视频
  • 下载文件
二、详情解读
2.1.上传文件功能
2.1.1.功能
  • 为课程上传视频文件和附件
    – 视频文件和附件文件保存到服务器
  • 浏览课程
    – 在线观看视频文件
    – 下载附件
2.2.开发过程
2.2.1.上传
  • models.pyCourse增加两个字段:
    video = models.FileField(blank=True, upload_to='videos/')
    attach = models.FileField(blank=True, upload_to=user_directory_path)

说明:这里blank=True都默认为空,是因为数据库已经有数据了,如果新增的字段不默认为空,则需要为它们添加数据,为图省事,这里都默认为空。

  • 迁移数据
python3 manage.py makemigrations course
python3 manage.py migrate
  • settings.py,配置文件存储位置
    MEDIA_URL='/media/'
    MEDIA_ROOT=os.path.join(BASE_DIR, 'media')
  • forms.py增加字段
    fields = ('title', 'overview', 'video', 'attach')
  • views.py,修改类视图CourseCreateView
    fields = ['title', 'overview', 'video', 'attach' ]
    form = CourseCreatedForm(request.POST, request.FILES)
  • course_create.html,修改模板
    <form action="." method="post" enctype="multipart/form-data">

实操一: 上传课程文件

step1:新增字段。编辑文件myproject/course/models.py

from django.db import models
from django.contrib.auth.models import User

# new
def user_directory_path(instance, filename):
    return 'courses/user_{0}/{1}'.format(instance.user.id, filename)

class Course(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='course_user')
    title = models.CharField(max_length=30)
    overview = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    video = models.FileField(blank=True, upload_to='videos/') # new
    attach = models.FileField(blank=True, upload_to=user_directory_path) # new

    class Meta:
        """
         内部类设置排序字段,以创建时间的倒序排序
        """
        ordering = ('-created',)

    def __str__(self):
        return self.title

说明
1).新增函数user_directory_path,返回附件的上传路径。
2).新增字段video、attach,注意upload_to的不同写法。

Step2:迁移数据

python3 manage.py makemigrations course
python3 manage.py migrate

Step3:配置文件存储位置。

# myproject/mysite/settings.py文件
.
.
.
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Step4:创建目录myproject/media/
Step5:增加字段。修改文件myproject/course/forms.py

from django import forms
from .models import Course

class CourseCreateForm(forms.ModelForm):
    class Meta:
        model = Course
        fields = ('title', 'overview', 'video', 'attach') 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值