2018-10-18-记最近遇到的各种问题与解决方法

个人博客地址——https://www.dogebug.cn/
GitHub地址——https://github.com/yanshigou/


layout: post
title: 最近遇到的各种问题与解决方法
date: 2018-10-18 20:28:00
comments: true
subtitle:
author: dzt
tags:

  • Django
  • Error
  • study

11:17 在run manage.py Task时 报错 SyntaxError: Non-ASCII character ‘\xe8’ in file”的解决办法

解决办法 首先发现文件名带有中文 把 mysite的副本 改为 mysite
然后还是报同样的错误 不过这次地址为settings.py 之前为python27下的__init__.py 说明之前的错误已经改完
接下来就是:
打开报错文件,在最上方加上

# -*- coding: utf-8 -*-

解决后成功同步数据库

11:44 https://blog.csdn.net/rongyongfeikai2/article/details/50322769

1.permission设为了any即任意人都可以发送rest请求;但实际使用场景中,应该用restframework的校验模块的
2.示例中逻辑都在views.py中,实际场景中views中的逻辑不易过多;数据的处理应该主要是在models.py中处理,然后views调用models.py中的方法,得到数据结果,最后进行返回

11:50 traceback.print_exc()

使用traceback.print_exc()来代替 print(Error) 来输出详细的异常信息
traceback.print_exc() 不但可以报错还是可以报出出错文件地址行数

traceback.print_exc()跟traceback.format_exc()有什么区别呢?
format_exc()返回字符串,print_exc()则直接给打印出来。
即traceback.print_exc()与print traceback.format_exc()效果是一样的。
print_exc()还可以接受file参数直接写入到一个文件。比如
traceback.print_exc(file=open(‘tb.txt’,‘w+’))
写入到tb.txt文件去。

serializers.py

ModelSerializer 比Serializer封装好了一层,直接自己生成的create和update,不用覆盖了,其实推荐用这个,毕竟Serializer封装的很低级,既然用django,就要用好点的 https://blog.csdn.net/xiaotao745324325/article/details/51834169

13:50 python2.7
def wrapper(*args, **kwargs):
	global _exception
	try:
		fn(*args, **kwargs)

*args表示任何多个无名参数,它是一个tuple

**kwargs表示关键字参数,它是一个dict

测试代码如下:

def foo(*arg,**kwargs):
    print 'args=',args
    print 'kwargs=',kwargs
    print '**********************'
if __name__=='__main__':
    foo(1,2,3)
    foo(a=1,b=2,c=3)
    foo(1,2,3,a=1,b=2,c=3)
    foo(1,'b','c',a=1,b='b',c='c')

执行结果如下:

args=(1,2,3)
kwargs={}
**********************
args=()
kwargs={'a':1,'c':3,'b':2}
**********************
args=(1,'b','c')
kwargs={'a':1,'c':'c','b':'b'}
**********************
14:25 发现View中各种类继承的不是(View)而是(APIView) https://blog.csdn.net/runnoob_1115/article/details/78486842

在此链接文章中顺便解决了 permission_classes: 权限赋予类
@permission_classes(…) 每个装饰器都有一个单独的参数,必须是类列表或者类元组。
一. APIView与View的区别

1.APIView是View的子类
2.传递给请求处理程序的request实例是REST框架的请求实例,而不是Django的HttpRequest实例
3.处理程序返回的基于REST框架的Response,而不是Django的HttpResponse,视图函数将会管理内容协商,然后设置正确的渲染方式
4.任何APIException将会被捕捉,然后转换成合适的response对象
5.接收到的请求首先被认证,然后赋予相应的权限,然后通过节流器分发给相应的请求处理函数,类似.get()和.post()

个人博客地址——https://www.dogebug.cn/
GitHub地址——https://github.com/yanshigou/

禁止不留原创地址、署名的转载
本人保留所有法定权利。违者必究

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值