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. 为github公开项目单独设置用户名

    背景: 由于在公司git的配置是公司内自己的用户id及邮箱,如果用同样的配置在github上提交公开项目,可能造成用户名及邮箱泄露,因此对于github上的项目,最好单独设置用户名,而每次在向gith ...

  2. 【转载】Linux 命令行快捷键 - 移动光标

    Linux 命令行快捷键 - 移动光标 涉及在linux命令行下进行快速移动光标.命令编辑.编辑后执行历史命令.Bang(!)命令.控制命令等.让basher更有效率. 常用 ctrl+左右键:在单词 ...

  3. C#学习笔记(36)——事件传值(非常牛逼!)

    说明(2018-4-9 23:01:20): 1. 这个真的想了很久,从晚上八点半写完上一篇博客,一直想到现在11点,以为没有办法实现了,结果看到一篇CSDN的文章,虽然没有看明白,但是看到一行代码后 ...

  4. linux服务器ssh防爆破

    查看爆破次数记录 # cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2&quo ...

  5. java生成兑换码礼包码--工具类

    import java.util.HashSet; import java.util.Random; import java.util.Set; public class GenSerial { pr ...

  6. 集合(从本部分开始涉及API)

    集合(从本部分开始涉及API) 集合是指一个对象容纳了多个对象,这个集合对象主要用来管理维护一系列相似的对象. 数组就是一种对象.(练习:如何编写一个数组程序,并进行遍历.) java.util.*定 ...

  7. Java基础学习心得笔记

    对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变.面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做 ...

  8. nw.js---创建一个hello word的方法

    一.如果用nw.js 来开发桌面应用 首先到Nw.js中文网下载软件: https://nwjs.org.cn/download.html 下载下来进行解压就可以了,绿色的免安装的,整个目录结果是这样 ...

  9. 关于 systemctl --user status 报错的问题

    关于 systemctl --user enable mpd 报错: Failed to connect to bus: No such file or directory 因为arch脚本中,sys ...

  10. myEclipse导入现成项目出现错误 【申明来源于网络】

    myEclipse导入现成项目出现错误 [申明来源于网络] 原地址:http://blog.sina.com.cn/s/blog_6d7703400100znh6.html file–>impo ...