个人博客地址——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/
禁止不留原创地址、署名的转载
本人保留所有法定权利。违者必究