admin后台管理(******)
能够对注册了的模型表 生成增删改查起码四个页面
http://127.0.0.1:8000/admin/app01/userinfo/ 查看用户
http://127.0.0.1:8000/admin/app01/userinfo/1/change/ 编辑用户
http://127.0.0.1:8000/admin/app01/userinfo/add/ 添加用户
http://127.0.0.1:8000/admin/app01/userinfo/2/delete/ 删除用户
http://127.0.0.1:8000/admin/app01/blog/ 查看个人站点
http://127.0.0.1:8000/admin/app01/blog/1/change/ 编辑个人站点
http://127.0.0.1:8000/admin/app01/blog/add/ 添加个人站点
http://127.0.0.1:8000/admin/app01/blog/2/delete/ 删除个人站点
用户头像的渲染
网站默认的静态文件资源 默认放在static文件夹下
用户上传的静态文件资源 也应该单独存放在某一个文件夹
# 规定用户上传的静态文件资源全部放到某一个指定的文件夹下
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
from django.views.static import serve
from BBS import settings
# 暴露给外界的后端文件资源
url(r'^media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT})
图片防盗链
请求来的时候 会检测当前请求的源地址是否来自于网站自己的
refer 放在请求头里面的数据 用来表示你是属于哪个网站
如果还想用 最简单粗暴的方式就是先下载到本地(写爬虫自动下)
对日期进行切割
日期归档 content create_time month
1 111 2019-11-1 2019-11
1 111 2019-11-25 2019-11
1 111 2019-11-10 2019-11
1 111 2019-10-1 2019-10
#官方提供的文档
from django.db.models.functions import TruncMonth
Article.objects
.annotate(month=TruncMonth('create_time')) # Truncate to month and add to select list
.values('month') # Group By month
.annotate(c=Count('id')) # Select the count of the grouping
.values('month', 'c') # (might be redundant, haven't tested) select month and count
注意:当你写的url再访问的时候发现没有命中,那么你应该去urls.py中查看是否被前面的url中途拦截了 最省力的解决方式 就是调换位置
自定义inclusion_tag
当页面上的某一块区域需要经常被使用 并且需要传参数才能够渲染出来
那么你可以考虑使用inclusion_tag
自定义inclusion_tag的步骤:
#跟自定义过滤器和标签是一样的
1.创建一个名字必须交templatetags文件夹
2.新建任意一个py文件
3.py文件内 写固定的两行代码
from django.template import Library
register = Library()
#工作原理
类似于函数的调用过程
你在使用inclusion_tag的时候,可以为其传参,它会将参数传递给一个html页面
该页面会利用传递过来的参数 渲染页面 然后将渲染好的页面 放在调用inclusion_tag的地方