一.ModelViewSet 路由

因为我们正在使用ViewSet代替View,实际上已经不再需要自己来设计URL的配置了。将资源和视图、URL绑定到一起是一个可以自动完成的过程,只需要使用Router即可。我们需要做的就是将视图集注册到Router上去而已。

  1. from django.conf.urls import url
  2. from app01 import views
  3.  
  4. urlpatterns = [
  5.  
  6. #评论
  7. url(r'comment/$', views.CommentViewSet.as_view({
  8. 'get': "list",
  9. 'post': 'create'
  10. })),
  11.  
  12. url(r'comment/(?P<pk>\d+)/$', views.CommentViewSet.as_view({
  13. 'get': 'retrieve',
  14. 'put': 'update',
  15. 'delete': 'destroy'
  16. })),
  17. ]
  18.  
  19. from rest_framework.routers import DefaultRouter
  20.  
  21. router = DefaultRouter()
  22. # 注册路由,表示路径comment对应视图函数CommentViewSet
  23. router.register(r'comment', views.CommentViewSet)
  24. urlpatterns += router.urls

将ViewSets注册到Routers的过程实际上类似于提供一个urlpattern。我们引入了两个参数,一个是views的URL prefix,另一个是viewset本身。 
我们使用的DefaultRouter也会自动地帮我们创建API root视图,多余路由可以注释掉了!

二.django logging配置

修改settings.py, 最后一行添加

  1. BASE_LOG_DIR = os.path.join(BASE_DIR, 'log')
  2. # 日志相关配置
  3. LOGGING = {
  4. 'version': , # 保留字段
  5. 'disable_existing_loggers': False, # 不要禁用已经存在的logger实例
  6.  
  7. 'formatters': { # 定义三种日志显示的格式
  8. 'standard': {
  9. 'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
  10. '[%(levelname)s][%(message)s]'
  11. },
  12. 'simple': {
  13. 'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
  14. },
  15. 'collect': {
  16. 'format': '%(message)s'
  17. }
  18. },
  19.  
  20. 'filters': { # 定义一个过滤规则
  21. 'require_debug_true': {
  22. '()': 'django.utils.log.RequireDebugTrue',
  23. },
  24. },
  25.  
  26. 'handlers': { # 日志流的处理方式
  27. 'console': { # 把日志打印到终端
  28. 'level': 'DEBUG',
  29. 'filters': ['require_debug_true'], # 只有在Django debug为True时才在屏幕打印日志
  30. 'class': 'logging.StreamHandler',
  31. 'formatter': 'simple'
  32. },
  33. 'default': {
  34. 'level': 'INFO',
  35. 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切
  36. 'filename': os.path.join(BASE_LOG_DIR, "info.log"), # 日志文件
  37. 'maxBytes': * * , # 日志大小 500M
  38. 'backupCount': , #
  39. 'formatter': 'standard',
  40. 'encoding': 'utf-8',
  41. },
  42. 'error': {
  43. 'level': 'ERROR',
  44. 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切
  45. 'filename': os.path.join(BASE_LOG_DIR, "err.log"), # 日志文件
  46. 'maxBytes': * * , # 日志大小 500M
  47. 'backupCount': ,
  48. 'formatter': 'standard',
  49. 'encoding': 'utf-8',
  50. },
  51. 'collect': {
  52. 'level': 'INFO',
  53. 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切
  54. 'filename': os.path.join(BASE_LOG_DIR, "collect.log"),
  55. 'maxBytes': * * , # 日志大小 500M
  56. 'backupCount': ,
  57. 'formatter': 'collect',
  58. 'encoding': "utf-8"
  59. }
  60. },
  61. 'loggers': {
  62.  
  63. # 默认的logger应用如下配置
  64. '': {
  65. 'handlers': ['default', 'console', 'error'], # 上线之后可以把'console'移除
  66. 'level': 'DEBUG',
  67. 'propagate': True, # 是否向父级logger实例传递日志信息
  68. },
  69.  
  70. # 名为 'collect'的logger还单独处理
  71. 'collect': {
  72. 'handlers': ['console', 'collect'],
  73. 'level': 'INFO',
  74. }
  75. },
  76. }

注意要手动创建log目录,目录里面创建3个文件err.log,info.log,collect.log

使用

在视图函数中使用时, 先导入模块, 并声明变量

  1. import logging
  2. # 生成一个以当前文件名为名字的 logger实例
  3. logger = logging.getLogger(__name__)
  4. # 生成一个名字为collect的日志实例
  5. collect_logger = logging.getLogger('collect')

然后在逻辑代码中加入

  1. logger.warning('找不到记录...')
  2. 或者
  3. collect_logger.info(name)

Python logger流示图

三.django-debug-toolbar使用指南

安装

  1. pip3 install django-debug-toolbar

配置

1.在settings.py中 将debug_toolbar添加到INSTALL_APPS 中,最后一行添加

  1. INSTALLED_APPS = [

  2. 'debug_toolbar',
  3. ]

2.urls.py中

  1. from django.conf import settings
  2. from django.conf.urls import include, url
  3.  
  4. if settings.DEBUG:
  5. import debug_toolbar
  6. urlpatterns = [
  7. url(r'^__debug__/', include(debug_toolbar.urls)),
  8. ] + urlpatterns

3.在settings.py中间件中加入DebugToolbarMiddleware,最后一行添加

  1. MIDDLEWARE = [
  2. # ...
  3. 'debug_toolbar.middleware.DebugToolbarMiddleware',
  4. ]

4.如果是本机调试,还在将127.0.0.1加入 INTERNAL_IPS

在settings.py中加入以下配置项:

  1. INTERNAL_IPS = ['127.0.0.1', ]

5. 配置jQuery的URL

django-debug-toolbar 默认使用的是Google的地址,默认配置如下:

  1. JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js'

国内用不了的话可以在settings.py中配置一下,例如(我这里特意选用了和原作者相同版本的jQuery):

修改settings.py,最后一行添加

  1. DEBUG_TOOLBAR_CONFIG = {
  2. "JQUERY_URL": '//cdn.bootcss.com/jquery/2.2.4/jquery.min.js',
  3. }

或者你如果在Django项目中使用了jquery的话就可以直接将这一项置为空,那么django-debug-toolbar 就会使用你项目中用到的jquery:

  1. DEBUG_TOOLBAR_CONFIG = {
  2. "JQUERY_URL": '',
  3. }

使用

访问具体路径的时候在页面右侧有各项配置面板,点击即可查看各种调试信息。

ModelViewSet 路由 / django logging配置 / django-debug-toolbar使用的更多相关文章

  1. python 全栈开发,Day96(Django REST framework 视图,django logging配置,django-debug-toolbar使用指南)

    昨日内容回顾 1. Serializer(序列化) 1. ORM对应的query_set和ORM对象转换成JSON格式的数据 1. 在序列化类中定义自定义的字段:SerializerMethodFie ...

  2. 第十三篇Django Logging配置样例

    第十三篇Django Logging配置样例 阅读目录(Content) Django 日志配置模板 官方链接 Django Logging Django 日志配置模板 LOGGING = { 've ...

  3. Django—logging配置

    我写Django项目常用的logging配置. # Django的日志配置项 BASE_LOG_DIR = os.path.join(BASE_DIR, "log") LOGGIN ...

  4. Django logging配置

    1,在项目下建个文件夹    log 2,在django的setting的配置下添加路径     BASE_LOG_DIR = os.path.join(BASE_DIR, "log&quo ...

  5. python3-开发进阶Django-debug-toolbar的配置和Django logging的配置

    阅读目录 django-debug-toolbar的配置 Django logging的配置 一.django-debug-toolbar的配置 1.介绍 django-debug-toolbar 是 ...

  6. Django - 常用配置

    一.logging配置 Django项目常用的logging配置 settings.py LOGGING = { 'version': 1, 'disable_existing_loggers': F ...

  7. django-debug-toolbar和Django 日志配置

    django-debug-toolbar介绍 django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息. gith ...

  8. Django logging模块

    一.Django logging配置 1.在setting.py中配置 # 日志文件存放路径 BASE_LOG_DIR = os.path.join(BASE_DIR, "log" ...

  9. Django中配置用Redis做缓存和session

    django-redis文档: http://django-redis-chs.readthedocs.io/zh_CN/latest/# 一.在Django中配置 # Django的缓存配置 CAC ...

随机推荐

  1. 照葫芦画瓢系列之Java --- Maven的配置

    一.Maven仓库分类 Maven中,仓库只分为两类:本地仓库和远程仓库.当Maven根据坐标寻找构件的时候,它首先去查看本地仓库,如果本地仓库有此构件,则直接使用,如果本地仓库不存在此构件,或者需要 ...

  2. Spring的原理性总结

    一.Bean的生命过程 Bean的生命过程可以借鉴Servlet的生命过程,了解其生命过程对于不管是思想还是以后的使用都很有帮助: Bean可以通过两种方式进行加载,分别是使用BeanFactory ...

  3. 初见jQuery EasyUI

    本文通过一个简单的小例子,简述jQuery EasyUI的使用方法,仅供学习分享使用,如有不足之处,还请指正. 什么是jQuery EasyUI ? 引用官网的一句话:jQuery EasyUI fr ...

  4. ajax简单登录(踩过的坑)

    登陆页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...

  5. unity修改脚本的图标

    我们看别人代码时有时看到人家的脚本显示的不是unity的默认图标,而是自己的logo.如: 这样看上去感觉很专业有没有. 修改方法: 1 在Project窗口中点击选中脚本,在Inspector界面点 ...

  6. 关于一体机外卖单不打印外卖单号FAQ(适用正餐6.0.09,轻餐4.0.6.1,轻餐4.0.6.2)

    适用情景:升级版本后打印机打印出的外卖小票不出现外卖单号. 解决方案:设置-功能设置-小票设置-小票自定义-前台小票-外卖订单-------选择编辑,选中右侧中外卖单号或者外卖订单编号,点击保存即可. ...

  7. Redis常用命令【字符串】

    1.启动Redis客户端 进入src目录下,执行:redis-cli启动Redis客户端 2.help 帮助 帮助命令,用来查看redis命令的使用方式 3.set 设置 3.1设置 3.2不存在才设 ...

  8. Spark SQL整体架构

    0.整体架构 注意:Spark SQL是Spark Core之上的一个模块,所有SQL操作最终都通过Catalyst翻译成类似的Spark程序代码被Spark Core调度执行,其过程也有Job.St ...

  9. Java中线程的同步问题

    在生活中我们时常会遇到同步的问题,而且大多数的实际问题都是线程的同步问题 我这里以生活中的火车售票来进行举例: 假设现在我们总共有1000张票要进行出售,共有10个出售点,那么当售票到最后只有一张票时 ...

  10. 数据挖掘---Matplotib的学习

    什么是matplotlib mat - matrix 矩阵                二维数据 - 二维图表            plot - 画图            lib - libra ...