第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示...

news/2024/5/13 23:19:09/文章来源:https://blog.csdn.net/weixin_33912638/article/details/85941158

第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示

 

首先了解一下static静态文件与上传资源的区别,static静态文件里面一般防止的我们网站样式的文件,包括ccs,js,网站样式图片

上传资源是用户操作上传的图片等资源

 

上传资源的配置

1,首先在项目里创建一个名称叫media的文件夹专门保存用户上传

2,settings.py文件配置上传资源的路径

# 上传资源路径,如果图片,上传文件等
MEDIA_URL = '/media/'                           # 设置上传资源前缀名称
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')    # 设置上传文件路径

这样配置好后,当用户上传文件时,会根据数据表类的上传字段设置来,将文件上传到,media文件夹里,如下

数据表类

class CourseOrg(models.Model):name = models.CharField(max_length=50, verbose_name='机构名称')desc = models.TextField(verbose_name='机构描述')category = models.CharField(max_length=20, verbose_name='机构类别', default='pxjg', choices=(('pxjg', '培训机构'), ('gx', '高校'), ('gr', '个人')))click = models.IntegerField(default=0, verbose_name='点击数')fav_nums = models.IntegerField(default=0, verbose_name='收藏数')image = models.ImageField(upload_to='org/%Y/%m', verbose_name='封面图', max_length=100)address = models.CharField(max_length=150, verbose_name='机构地址')city = models.ForeignKey(CityDict, verbose_name='外键城市表')add_time = models.DateTimeField(default=datetime.now, verbose_name='添加日期')class Meta:verbose_name = '课程机构表'verbose_name_plural = verbose_namedef __str__(self):return self.name

此时可以看到上传文件安装年月来保存文件,那么怎么设置文件名

 

设置上传文件名称

1、先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在storage.py中添加如下代码:

# -*- coding: UTF-8 -*-
from django.core.files.storage import FileSystemStorage
from django.http import HttpResponse
class ImageStorage(FileSystemStorage):from django.conf import settingsdef __init__(self, location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL):# 初始化super(ImageStorage, self).__init__(location, base_url)# 重写 _save方法 def _save(self, name, content):#name为上传文件名称import os, time, random# 文件扩展名ext = os.path.splitext(name)[1]# 文件目录d = os.path.dirname(name)# 定义文件名,年月日时分秒随机数fn = time.strftime('%Y%m%d%H%M%S')fn = fn + '_%d' % random.randint(0,100)# 重写合成文件名name = os.path.join(d, fn + ext)# 调用父类方法return super(ImageStorage, self)._save(name, content)

2、在models.py文件中添加如下代码:

在数据库文件导入我们设置的类

在上传字段里设置storage=ImageStorage()执行类,就是我们自定义storage.py中的类

from system.storage import ImageStorage
pic=models.ImageField(upload_to='img/%Y/%m/%d',storage=ImageStorage())  #如果上传文件可以将ImageField换为FileField

 

上传文件显示

上传的文件如图片,要在前台或者后台显示,就需要配置才能显示

要给上传文件访问配置一个专门的url路由映射

from django.conf.urls import url, include                   # 导入django自在的include逻辑
from django.contrib import admin
from django.views.generic import TemplateView               # 导入django自带的TemplateView逻辑
from django.views.static import serve                       # 导入django自带的serve静态资源逻辑
import xadmin                                               # 导入xadminfrom app_users.views import deng_lu, zhu_ce, active_code, logout                 # 导入登录逻辑处理类
from app_organization.views import org_list                                      # 导入授课机构逻辑
from MxOnline.settings import MEDIA_ROOTurlpatterns = [url(r'^xadmin/', xadmin.site.urls),url(r'^index.html', TemplateView.as_view(template_name='index.html'), name='index'),# 注册url(r'^register.html', zhu_ce.as_view(), name='register'),url(r'^captcha/', include('captcha.urls'), name='captcha'),url(r'^active/(?P<active_de>.*)/$', active_code.as_view(), name="user_active"),# 登录url(r'^login.html', TemplateView.as_view(template_name='login.html'), name='login'),url(r'^deng_lu', deng_lu.as_view(), name='deng_lu'),url(r'^logout', logout.as_view(), name='deng_lu'),# 授课机构url(r'^org_list.html', org_list.as_view(), name='org_list'),# 专门处理静态资源请求映射,也就是media上传文件夹里的请求映射url(r'media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT})  # MEDIA_ROOT为配置上传文件的路径变量
]

此时后台可以显示图片了

 

前台显示可以通过settings.py配置的上传资源前缀名称来拼接路径显示

HTML文件

                                <a href="org-detail-homepage.html"><img width="200" height="120" class="scrollLoading"data-url="{{ MEDIA_URL }}{{ ji.image }}"/>         {# 需要拼接静态资源路径 #}</a>

注意:如果在html文件要获取到settings.py配置的MEDIA_URL,需要在配置文件设置一个静态资源处理类

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],                      # 配置模板文件路径,也就是html路径'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages','django.template.context_processors.media',                 # 配置html页面获取MEDIA_URL路径
            ],},},
]

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_766711.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP网站http替换https

PHP网站http替换https

百度搜索重心,从网站到到熊掌号,流量品牌互动,企业主的新选择

22日百度联盟熊掌号分论坛上百度高管针对熊掌号发展及其未来走向给了明确说明&#xff0c;对于应对网站优化网站效果排名来说SEO们的未来可期。 过去的半年&#xff0c;是百度搜索发生剧烈变化的半年&#xff0c;在过去的时代中&#xff0c;百度搜索索引的是一个个网站、站点&a…

https 免费证书获得了,怎样配置呀,为什么我的网站还是http呢

https 免费证书获得了&#xff0c;怎样配置呀&#xff0c;为什么我的网站还是http呢 推荐一个免费的阿里云产品&#xff1a;云盾证书(https证书) 为了能让非专业人士看懂&#xff0c;同样尽量用直白的话&#xff0c;一般来说&#xff1a;当你个人需要建立网站&#xff0c;或者公…

安装宝塔,并创建站点

宝塔面板分linux面板和windows面板&#xff0c;安装宝塔linux面板首先要访问宝塔官网查看对应版本进行选择 宝塔面板的安装需要注意的地方有&#xff1a; 1.纯净系统 2.确保是干净的操作系统&#xff0c;没有安装过其它环境带的Apache/Nginx/php/MySQL&#xff0c;否则安装不…

SQLserver中优化动易网站实例

在SQL server中我们已经了解到了分析顾问的强大之处&#xff0c;利用这个程序实现了大幅度的查询优化&#xff0c;并且操作简单。那么在实际中&#xff0c;又是如何完成真正的优化的呢&#xff1f;在现实环境中&#xff0c;我们利用系统监视功能联合分析顾问来解决查询优化的问…

接入高防之后网站问题需要排查的有哪些?

接入高防之后&#xff0c;为了保证业务最大程度的稳定&#xff0c;确认问题所在&#xff0c;墨者安全建议在切换本地的测试。本地测试步骤为 &#xff1a;a.首先修改本地hosts文件&#xff0c;使本地对于被防护站点的请求经过高防&#xff0c;以Windows操作系统为例&#xff1…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书&#xff0c;就应该有所收获&#xff0c;有所总结&#xff0c;最近把《大型网站技术架构》一书给看完了&#xff0c;给人的印象实在深刻&#xff0c;再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

如何防御网站被ddos攻击 首先要了解什么是流量攻击

2019独角兽企业重金招聘Python工程师标准>>> 什么是DDOS流量攻击&#xff1f;我们大多数人第一眼看到这个DDOS就觉得是英文的&#xff0c;有点难度&#xff0c;毕竟是国外的&#xff0c;其实简单通俗来讲&#xff0c;DDOS攻击是利用带宽的流量来攻击服务器以及网站。…

【面试精选】关于大型网站系统架构你不得不懂的10个问题

该文已加入笔主的开源项目——JavaGuide&#xff08;一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目),地址:https://github.com/Snailclimb/JavaGuide 。觉得不错的话&#xff0c;记得点个Star。下面这些问题都是一线大厂的真实面试问题&#xff0c;不论是对你面试…

python语言网站_部署基于python语言的WEB发布环境

一、部署说明 1、python语言介绍 2、实验环境 实验机器&#xff1a;Vmware虚拟机 8核10G 网卡&#xff1a;桥接模式 系统&#xff1a;centos7.5 防火墙&#xff1a;关闭 Selinux&#xff1a;关闭 网段&#xff1a;192.168.10.0/25 WEB01&#xff1a;192.168.10.42 二、部署流程…

百度快照 xilinx fpga权威设计指南_快照在SEO优化中扮演什么角色?

Seo 优化会经常听到“快照”这个词&#xff0c;比如在交换链接时&#xff0c;你会听到快照的更新速度。快照在SEO优化中扮演着一个什么样的角色&#xff1f;大多数人都不知道。Snapshot 是搜索引擎存储在服务器中的备份网页&#xff0c;也是搜索引擎对网站的认知属性。在网站进…

python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂

网址需要自己替换懂的人都懂512*2,主要学习简单的爬虫,别乱用,否则后果自负![Python] 纯文本查看 复制代码import requests,bs4,re,os,threadingclass MeiNvTu: def __init__(self): self.url_mainhttps://网址保密,不能乱发哈哈/pw/ self.urlf{self.url_main}thread.php?fid …

怎样把本地html传到网上,如何制作自己的网页链接?教你怎么把自己制作的网站发布到网上?...

如何制作自己的网页链接?教你怎么把自己制作的网站发布到网上?下面就来一起看看吧!确定网页架构。要确定我们要做的网页内容&#xff0c;必须确定一个框架形式。一般比较流行&#xff0c;大部分网页都是。①网站页眉网站导航栏内容版块。一般新浪的网页和部分浏览器都采用这种…

做10个网站用多大的服务器,【教你搭建服务器系列】(10)利用Docsify搭建个人笔记网站...

写文档的工具非常多&#xff0c;但是作为程序员&#xff0c;大部人还是偏爱Markdown的&#xff0c;有时需要写一份开发文档&#xff0c;以供自己或者他人查看&#xff0c;那如何把 Markdown 文件转换成文档呢&#xff1f;docsify 就可以做到了&#xff0c;docsify 可以直接加载…

更换php版本_PHP与SEO,应用curl及正则获取搜狗搜索相关关键词

PHP是世界上最好的语言&#xff0c;来吧&#xff0c;入坑吧&#xff0c;我们一起来拍(pai)黄(huang)片(pian)&#xff0c;Sorry&#xff0c;手抖&#xff0c;打错字了&#xff0c;当然是学习简写的&#xff0c;php啦&#xff01;PHP即“超文本预处理器”&#xff0c;是一种通用…

php开源代码推荐,非常好用的源代码网站推荐,用这些开源代码就够了

原标题&#xff1a;非常好用的源代码网站推荐&#xff0c;用这些开源代码就够了作为一个开发人员写代码是工作的日常&#xff0c;在这个万物互联的时代&#xff0c;有问题马上百度、谷歌、知乎一下等等&#xff0c;代码也不例外&#xff0c;借鉴别人的代码同样可以事半功倍。下…

服务器运行环境查看,如何查看linux环境变量_网站服务器运行维护

linux如何查看进程端口是多少_网站服务器运行维护linux查看进程端口的方法是&#xff1a;1、首先执行命令【ps -ef | grep 进程名】&#xff0c;查看进程pid&#xff1b;2、然后执行命令【netstat -nap | grep 进程pid】&#xff0c;通过pid查看进程端口。首先执行如下命令&…

div 隐藏_隐藏文本与隐藏链接对SEO的影响!

对于SEO行业而言&#xff0c;隐藏文本(HiddentText)是一个古老而又久远的话题&#xff0c;它早期主要用于提高页面对特定关键词的相关性&#xff0c;由于这部分内容对用户不可见&#xff0c;常常被算法识别为作弊行为。 但即便如此&#xff0c;仍有众多用户对其乐此不疲&#…

如何抓取一个网站的分页_如何让网站更符合搜索引擎的抓取规则 - 百度蜘蛛池博客...

原出处&#xff1a;蜘蛛池博客原文链接&#xff1a;如何让网站更符合搜索引擎的抓取规则&#xff1f; - 蜘蛛池博客如果一个网站能够经常被搜索引擎抓取&#xff0c;就表示搜索引擎对这个网站非常信任&#xff0c;从而赋予网站的权重也就非常高&#xff0c;关键词排名、网站流量…

php html5 cms,建站教程|CMS教程|PHP教程|html5教程 - 站长图库

2021-03-1147有时候项目中需要进行多个字段搜索就可以用到此方法在Laravel中的可以同时使用多个where,所以我们可以每个字段分配一个where()然后在每个where()中去闭包判断$username ;2021-03-1187下面给大家介绍thinkphp withCredentials 跨域问题解决思路&#xff0c;希望对…