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配置 日期截断函数 上传图片管理设计方案的更多相关文章

  1. django时区设置(timezone)

    django时区设置(timezone): 默认: TIMEZONE:'America/Chicago'(以前的版本,现在的版本默认的都是UTC时间.) Chicago时间,为UTC/GMT -6 小 ...

  2. django时区设置以及全球用户如何各自显示当地时间

    在Django的配置文件settings.py中,有两个配置参数是跟时间与时区有关的,分别是TIME_ZONE和USE_TZ 如果USE_TZ设置为True时,Django会使用系统默认设置的时区,即 ...

  3. Django时区设置的郁闷

    第一次在windows下看到这个设置的时候,就设置成Ubuntu上时区设置的字符串“Asia/Shanghai”,结果报错通不过,最后记不清楚从哪儿查的,改成GMT+8. 最近把应用放到Linux上做 ...

  4. django 时区设置 redis token缓存策略

    from django.utils.timezone import utcimport datetime datetime.datetime.utcnow().replace(tzinfo=utc)# ...

  5. django时区设置

    1. 创建web目录 django-admin.py startproject mysite 2. 启动web服务 python manage.py runserver python manage.p ...

  6. django 权限设置-登录配置权限

    1.首先需要一个判断用户是否拥有这个权限的name来区分在主页上是否显示标签 在permission中加入 name=models.CharField(max_length=32, verbose_n ...

  7. Django的时区设置问题

    1.Django的时区问题 django默认的时区是UTC,平时是没有什么影响的,但是在需要将时间戳转换成本时区的时间或者是获取当前的本地的localtime的时候就出现了问题.之前程序在测试时是运行 ...

  8. django静态文件的配置

    Django static静态配置文件   对于Django来说静态文件一般交由Web服务器处理,Django本身不处理静态文件.为了使Django开发环境能够处理静态文件,Django有和生产环境不 ...

  9. Django 设置media static

    ango 设置media static 本文python版本3.6.1,Django版本1.11.1 1.settings.py配置 增加django.template.context_process ...

随机推荐

  1. 物联网架构成长之路(26)-Docker构建项目用到的镜像2

    0. 前言 前面介绍的都是一些标准的第三方中间件,基本都是有现成的Dockerfile或者Image,不需要我过多的关心,这一篇要介绍一些自己构建的Docker Image了.刚开始学,Dockerf ...

  2. PowerDesigner数据库设计PDM基于Excel的导入导出总结

    经常用到pdm来管理代码,一两张表,手写一下还凑合,一旦表多了,就慌了.于是,开始学习用vbs进行Excel的来快速导入导出操作PDM就变得很紧急了,搜罗了网络上的很多vbs脚本,各有各的优点,但对于 ...

  3. git学习小游戏

    学习git可以试试这个游戏:https://learngitbranching.js.org/

  4. 重新粗推了一下Master Theorem

    主定理一般形式是T(n) = a T(n / b) + f(n), a >= 1, b > 1.递归项可以理解为一个高度为 logbn 的 a 叉树, 这样 total operation ...

  5. .NET Core 2.0 获取完整的URL

    在之前的ASP.NET中,可以通过 Request.Url.AbsoluteUri 获取,但在ASP.NET Core没有这个实现,请问如何获取呢? 方法一:先引用“using Microsoft.A ...

  6. 群晖搭建webssh

    拷贝工程到系统根,然后需要赋予权限 sudo chmod 777 -R WebSSH2/ git clone https://github.com/zhaocundang/WebSSH2.git de ...

  7. oracle 聚合函数 LISTAGG ,将多行结果合并成一行

    LISTAGG( to_char(Item_Category_Name), ',') WITHIN GROUP(ORDER BY Item_Category_Name)  -- 将 Item_Cate ...

  8. 【Static Program Analysis - Chapter 4】格理论(Lattice Theory)与程序分析

    # 从一个例子说起, **任务:给定这样一段代码,假设我们想分析出这段代码中,每个数值型变量和表达式的符号,即正数,负数或0.** 此外,还有可能出现两种情况就是: 1.我们无法分析出结果,即我们无法 ...

  9. 【IEEE会议论文】格式规范问题

    - Text area: The height of the text should not be much smaller than 23.5 cm  and the width should no ...

  10. mysql 命令行 备份 恢复数据

    找到mysql启动位置 whereis mysql 备份指定数据库 包括表结构和数据 使用命令mysqldump 数据库名 -u 用户名 -p > 存储文件路径 [root@izm5e16gjd ...