马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
DRF
利用drf获取序列化后的id
- visitor_serializer = VisitorSaveSerializer(data={…})
- if visitor_serializer.is_valid():
- visitor = visitor_serializer.save()
- visitor_id = visitor.pk
复制代码 postgrepsql踩坑
django利用postgrepsql,利用聚合函数如:sum 等,被引用的字段必须是浮点数或者整数,不能是字符串
解析Excel
注:假如xlrd版本不符合可导致出现:Excel xlsx file not supported报错
原因:xlrd1.2.0之后的版本不支持xlsx格式,支持xls格式
办法一:
卸载新版本 pip uninstall xlrd
安装老版本:pip install xlrd=1.2.0 (或者更早版本)
方法二:
将xlrd用到的excel版本格式修改为xls(保险起见,另存为xls格式)
建议:个人更推荐利用第二种方法
- filename = request.FILES.get('file') #获取文件
- name = filename.name
- type_excel = name.split(".")[1]
- if type_excel in ['xlsx','xls']: #判断文件是否
- #开始解析表格
- wb = xlrd.open_workbook(filename=None, file_contents=filename.read())
- table = wb.sheets()[0]
- nrows = table.nrows # 行数
- item_list = []
- try:
- for specific in range(2, nrows): # 从0开始把表头省略则读取表头信息,如果从1开始则直接读取数据
- rowValues = table.row_values(specific) # 一行的数据:list
复制代码 时间查询
- 按照周查询
- now_time = datetime.datetime.now()
- # 距离周日相隔的天数,这里得到int型数值
- day_num = now_time.isoweekday()
- # 查周日的日期,现在时间减去相隔天数得出周日的日期
- week_day = (now_time - datetime.timedelta(days=day_num))
- # 改格式,将datetime类型转换为
- date类型
- monday = week_day.date()
- query_order = CrmOrder.objects.filter(order_time__range=(monday,now_time))
复制代码 setting配置
- DATA_UPLOAD_MAX_MEMORY_SIZE = 10485760 #数据上传最大内存大小,默认2.5mb,这里设置成最大10mb
复制代码 apscheduler定时任务
#注意:定时任务执行的函数需要写入路由
根据某个时间去创造定时任务
- INSTALLED_APPS =[
- 'django_apscheduler'
- ]
- from apscheduler.schedulers.background import BackgroundScheduler
- from django_apscheduler.jobstores import DjangoJobStore, register_job, register_events
- # 实例化调度器
- scheduler = BackgroundScheduler()
- scheduler.add_jobstore(DjangoJobStore(),"default")
- #根据重启时间创建定时任务 到时间发送消息给申请人询问是否要重启项目
- message_prompt:需要执行的函数 其他参数:年月日时分秒
- scheduler.add_job(message_prompt, "cron", year=recovery_time.year, month=recovery_time.month,
- day=recovery_time.day,
- hour=recovery_time.hour, minute=recovery_time.minute, kwargs={'id':info_poj.id},
- coalesce=False)
复制代码 指定时间去执行函数
- # 实例化调度器
- scheduler = BackgroundScheduler()
- # 调度器使用crm_order_add
- seconds定时多长时间执行 秒单位
- scheduler.add_job(crm_order_add, "interval", seconds=1800, args=['requeat']) # 半小时执行一次接口
- # 监控任务——注册定时任务
- register_events(scheduler)
- # 调度器开始运行
- scheduler.start()
复制代码 获取url.py的name
- current_url = request.resolver_match.url_name
-
复制代码 中心件
- 创建mymiddleware文件夹,创建自己的中间件py
- 如:让某个文件夹访问需要token
- from django.http import HttpResponseRedirect, HttpResponse
- from django.utils.deprecation import MiddlewareMixin
- # 设置路由需要验证的名单
- from center.models import Users
- # whiteUrls = ['media']
- #
- # class UserAuthMiddleWare(MiddlewareMixin):
- # #访问路由需要token验证
- # def process_request(self, request):
- # print(request.path)
- # pat = request.path #访问路径
- #
- # if pat.split('/')[1] in whiteUrls:
- # token = request.META['HTTP_AUTHORIZATION'] if 'HTTP_AUTHORIZATION' in request.META else None
- # try:
- #
- # userinfo = Users.objects.filter(token=token).first()
- # except Exception as e:
- # return HttpResponse("PleaseStayAway!")
- # if userinfo is None:
- # return HttpResponse("PleaseStayAway!")
- 在setting的MIDDLEWARE中导入
- MIDDLEWARE = [
- "mymiddleware.中间件名称.UserAuthMiddleWare"
- ]
- 即可
复制代码 分页工具
- #工具函数
- from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
- def paging_component(reports,pagesize,num_p):
- """
- :param reports: 对象数据
- :param pagesize: 一页显示多少个。默认3个
- :param num_p: 第几页
- :return: 分页后的对象数据
- """
- paginator = Paginator(reports, pagesize)
- count = paginator.count # 需要分类数据的对象总数
- num_pages = paginator.num_pages # 需要分类数据的对象总数
- try:
- reports = paginator.page(int(num_p))
- except PageNotAnInteger:
- reports = paginator.page(number=1)
- except EmptyPage:
- reports = paginator.page(1)
- # print(reports)
- return {"reports":reports,"count":count,"num_pages":num_pages}
-
- #使用方法
- pagesize = request.GET.get('pagesize', 10) #pagesize 一页显示多少个。默认3个
- page = request.GET.get('page', 1) # 以page为键得到默认的页面1
- reports:queryset对象列
- reports = paging_component(reports,pagesize,page)
- reports['reports'].object_list #获取分页后的数据
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |