django时区设置 media配置 日期截断函数 上传图片管理设计方案
1.django时区
修改一下app里的设置
TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True # 不用UTC时间 USE_TZ = False
不使用UTC时间
2.media设置
事实上MEDIA_ROOT和MEDIA_URL代表的是用户上传后的文件一般保存的地方。
与这两个参数有联系的,是django中的FileField和ImageField这样的Model类中,有up_load参数可选。
up_load需要传一个路径(avatar文件夹会自动创建)
avatar = models.FileField(upload_to='avatar/', default='avatar/default.png')
而MEDIA_URL,则代表用户通过URL来访问这个本地地址的URL。
# 如果不配置MEDIA_ROOT,和MEDIA_URL,默认存到avatar # 如果配置了MEDIA_ROOT,和MEDIA_URL,默认存到media/avatar MEDIA_URL = "/media/" MEDIA_ROOT = os.path.join(BASE_DIR, "media")
这样配置了MEDIA_ROOT和MEDIA_URL以后,要在路由开一个口,就能访问到这些文件了
from django.conf.urls import url from django.contrib import admin from blog import views from django.views.static import serve from BBS import settings urlpatterns = [ # 放到最上面或者中间,都不合适 # url(r'^(?P<username>[\w]+)', views.user_blog), url(r'^$', views.index), url(r'^admin/', admin.site.urls), url(r'^login/', views.login), url(r'^get_valid_code/', views.get_valid_code), url(r'^register/', views.register), url(r'^check_username/', views.check_username), url(r'^index/', views.index), url(r'^logout/', views.logout), # 有名分组 # url第一个参数正则表达式,第二个参数,函数的内存地址,第三个参数:字典,它会以关键字参数的形式,传到(第二个参数的)函数中,第四个参数,别名 # 当你从浏览器输入:media/后面的路径回去settings.MEDIA_ROOT这个变量对应的文件夹下去寻找 url(r'^media/(?P<path>.*)', serve,{'document_root':settings.MEDIA_ROOT}),
设置了media所在文件夹以后,注意以后更新要取出user对象,用save方法,不能直接用update方法。这样文件不会存到media下面。
使用save方法会自动将文件下载到models里配置的upload路径,但是使用update不会帮你自动下载到相应路径。
可以在settings设置文件夹地址,在路由开口即可访问,但是不要这么做,这样做不安全
在settings.py设置
MEDIA_BBS = os.path.join(BASE_DIR, "BBS")
在路由配置
url(r'^bb/(?P<path>.*)', serve, {'document_root': settings.MEDIA_BBS}),
这样BBS文件即可访问了
3.错误页面设计
url(r'^', views.error),
让其匹配到所有,这个要放在路由匹配的最下面,然后再设计一个自定义错误页面即可
在路由配置
4.在归类的时候,往往有按日期分类的这种需求,可以用到日期截断函数
from django.db.models.functions import TruncMonth category_num=models.Category.objects.filter(blog=blog).annotate(coun=Count('article__title')).values_list('title','coun') tag_num=models.Tag.objects.filter(blog=blog).annotate(coun=Count('article__title')).values_list('title','coun') # y_m_num=models.Article.objects.filter(blog=blog).annotate(y_m=TruncMonth('create_time')).values('y_m').annotate(coun=Count('y_m')).values_list('y_m','coun') y_m_num=models.Article.objects.filter(blog=blog).annotate(y_m=TruncMonth('create_time')).values('y_m').annotate(coun=Count('y_m')).values_list('y_m','coun') print(y_m_num)
5.上传的图片以及相应文件,如果不处理,在服务器会越来越多。而且用户有时会删掉文章,但是这时却没有处理在文章里用到的图片或文件,这时就需要处理一下。可以在设计的阶段,添加一张表,让文件和文章关联起来。在用户上传文章后,把用到的图片与文章进行关联,用户删除文章后,把关联到的文章这个字段的值删除。然后定期清理没有关联到文章的所有图片。
django时区设置 media配置 日期截断函数 上传图片管理设计方案的更多相关文章
- django时区设置(timezone)
django时区设置(timezone): 默认: TIMEZONE:'America/Chicago'(以前的版本,现在的版本默认的都是UTC时间.) Chicago时间,为UTC/GMT -6 小 ...
- django时区设置以及全球用户如何各自显示当地时间
在Django的配置文件settings.py中,有两个配置参数是跟时间与时区有关的,分别是TIME_ZONE和USE_TZ 如果USE_TZ设置为True时,Django会使用系统默认设置的时区,即 ...
- Django时区设置的郁闷
第一次在windows下看到这个设置的时候,就设置成Ubuntu上时区设置的字符串“Asia/Shanghai”,结果报错通不过,最后记不清楚从哪儿查的,改成GMT+8. 最近把应用放到Linux上做 ...
- django 时区设置 redis token缓存策略
from django.utils.timezone import utcimport datetime datetime.datetime.utcnow().replace(tzinfo=utc)# ...
- django时区设置
1. 创建web目录 django-admin.py startproject mysite 2. 启动web服务 python manage.py runserver python manage.p ...
- django 权限设置-登录配置权限
1.首先需要一个判断用户是否拥有这个权限的name来区分在主页上是否显示标签 在permission中加入 name=models.CharField(max_length=32, verbose_n ...
- Django的时区设置问题
1.Django的时区问题 django默认的时区是UTC,平时是没有什么影响的,但是在需要将时间戳转换成本时区的时间或者是获取当前的本地的localtime的时候就出现了问题.之前程序在测试时是运行 ...
- django静态文件的配置
Django static静态配置文件 对于Django来说静态文件一般交由Web服务器处理,Django本身不处理静态文件.为了使Django开发环境能够处理静态文件,Django有和生产环境不 ...
- Django 设置media static
ango 设置media static 本文python版本3.6.1,Django版本1.11.1 1.settings.py配置 增加django.template.context_process ...
随机推荐
- 基于Kafka的生产者消费者消息处理本地调试
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/68174111冷血之心的博客) Kafka下载地址:http://d ...
- delphi怎样把子窗体显示在pagecontrol的tabsheet
https://bbs.csdn.net/topics/391980918 unit Unit1; interface uses Winapi.Windows, Winapi.Messages, Sy ...
- redis 集群搭建碰到的问题
make PREFIX=/usr/local/redis install把编译好的redis 安装到指定目录下. redis.conf文件从源码目录拷贝到/usr/local/redis(安装目录)下 ...
- Altium Designer学习---如何进行SI仿真
Altium designer 如何进行SI仿真. 1.仿真电路中需要至少一块集成电路: 2.器件的IBIS模型: 3.在规则中必须设定电源网络和地网络: 4.建立SI规则约束: 5.层堆栈必须设置正 ...
- Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)
系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...
- JS 使用const声明常量的本质(很多人都有误解)
在我们使用const声明常量时,总认为值一旦声明就不可改变,其实是有误解的: 刚在看ES6标准文档时,仔细阅读了const的解析,恍然大悟的感觉,分享给大家. 本质 const实际上保证的,并不是变量 ...
- Oracle导出数据EXP00106错误
在导出dmp文件的时候(命令:exp 用户名/密码@IP/实例名 file=D:\20180910.dmp log=D:\20180910.log),遇到以下错误: 错误原因: 导出使用的是Orac ...
- 一种隐蔽性较高的Java ConcurrentModificationException异常场景
前言 在使用Iterator遍历容器类的过程中,如果对容器的内容进行增加和删除,就会出现ConcurrentModificationException异常.该异常的分析和解决方案详见博文<Jav ...
- C# windows GDI+仿画图 绘图程序设计
C# windows GDI+仿画图 绘图程序设计 1.介绍 这里分享一个简单的画图程序 原作者:author: ping3108@163.com 2.程序主窗体设计 3.程序设计 本程序工程使用VS ...
- webStorm的使用
最近要写点前端的东西,ideaCE版对js支持不好,写着很蛋疼,于是乎尝试了网上很流行的前端webstorm,但是在加载库文件时总是出错. 源文件:<script src="/jque ...