【Django知识补充 - 1】:admin站点和rest_framework实现文件的上传和下载

简介: 【Django知识补充 - 1】:admin站点和rest_framework实现文件的上传和下载

项目准备


  1. 创建一个项目和一个子应用


  1. 创建一个apps文件夹存放子应用,并将apps设置为源根。

e65e28b914b541d9b04af72b17d39b14.png



settings.py中的配置


  1. 配置apps文件夹的路径

09c4067cfbdd4ac499e87a27f8dba5c1.png

settings.py 中添加子应用

6bd09dbacbdc4775b3d0b94712b475ad.png

注释MIDDLEWARE中的 ‘django.middleware.csrf.CsrfViewMiddleware’

f93ba48397614aa083e6c87b4236ac0c.png



在settings.py中设置好数据库和media静态文件的设置

ddb79aa7c92d48e59eec60558aa27002.png

b77f9ab92dae4b55b6fda06ff0b73eca.png



主路由urls.py的配置

8c15e6c940fb4516bcd9549879070e04.png





子应用中的文件代码


_init_.py

from pymysql import install_as_MySQLdb
install_as_MySQLdb()



admin.py

from django.contrib import admin
# Register your models here.
from drfapp.models import SimdFiles
@admin.register(SimdFiles)
class SimdFiles_admin(admin.ModelAdmin):
  list_display = ['title', 'file', 'add_time']



models.py

from django.db import models
from datetime import datetime
# Create your models here.
class SimdFiles(models.Model):
    title = models.CharField(max_length=200, verbose_name='文件名称')
    file = models.FileField(upload_to='file_url', verbose_name='文件路径')
    add_time = models.DateTimeField(default=datetime.now(), verbose_name='文件添加时间')
    class Meta:
        db_table = 'SimdFiles'
        verbose_name = '上传文件'
        verbose_name_plural = verbose_name



serializers.py

from rest_framework import serializers
from drfapp.models import SimdFiles
class SimdFilesSerializer(serializers.ModelSerializer):
    class Meta:
        model = SimdFiles
        fields = ['title', 'file', 'add_time']


urls.py

from django.urls import re_path
from drfapp.views import SimdFielsViews
urlpatterns = [
    re_path(r'^file/$', SimdFielsViews.as_view({'get':'list'})),
]


views.py

from drfapp.models import SimdFiles
from drfapp.serializers import SimdFilesSerializer
from rest_framework import viewsets
from rest_framework.response import Response
class SimdFielsViews(viewsets.ModelViewSet):
    serializer_class = SimdFilesSerializer
    def get_queryset(self):
        return SimdFiles.objects.all()


演示


在admin中上传文件


16b1aaaaebb548ce81fd0ac6fb6ac706.png


rest_framework中下载


  • 重新输入路由路径


6af1e727cef1458f91e40ea42c1f8c98.png

回车后即可看到rest_framework界面


bc1306879b0a4ee6aa4b1ef1bad717f4.png

点击文件路由即可下载


1e2ae36206ca4b7682ceb3f1d427d996.png


9015c315a9744864ac012d4a7aebf4ec.png


相关文章
|
2月前
|
Python
django下载文件4-4|
django下载文件4-4|
|
3月前
|
前端开发 JavaScript Linux
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
|
5月前
|
数据管理 数据库 数据安全/隐私保护
Django——Auth模块以及admin站点
Django——Auth模块以及admin站点
|
6月前
|
JSON 前端开发 网络架构
Django的web框架Django Rest_Framework精讲(四)
Django的web框架Django Rest_Framework精讲(四)
|
6月前
|
前端开发 数据库 网络架构
Django的web框架Django Rest_Framework精讲(三)
Django的web框架Django Rest_Framework精讲(三)
|
6月前
|
前端开发 数据库 数据安全/隐私保护
Django的web框架Django Rest_Framework精讲(二)
Django的web框架Django Rest_Framework精讲(二)
|
6月前
|
JSON 前端开发 数据库
Django的web框架Django Rest_Framework精讲(二)
Django的web框架Django Rest_Framework精讲(二)
|
6月前
|
JSON API 数据库
Django的web框架Django Rest_Framework精讲(一)
Django的web框架Django Rest_Framework精讲(一)
149 0
|
6月前
|
存储 数据库 Python
Django教程第6章 | web开发实战-文件上传(导入文件、上传图片)
web应用实战:导入文件解析到DB,上传图片【2月更文挑战第25天】
92 0
Django教程第6章 | web开发实战-文件上传(导入文件、上传图片)
|
6月前
|
Python
百度搜索:蓝易云【Django自带的Admin后台中如何获取当前登录用户】
在上面的代码中,`@staff_member_required`装饰器确保只有管理员可以访问 `my_custom_view`视图,而 `@login_required`装饰器确保只有登录的用户可以访问该视图。然后,可以使用 `request.user.username`获取当前登录用户的用户名,并将其传递到模板中进行显示或其他操作。
56 3