django使用踩坑经历

embedded/2025/1/23 8:43:28/
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.nametype_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
如:让某个文件夹访问需要tokenfrom 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, EmptyPagedef 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为键得到默认的页面1reports:queryset对象列
reports = paging_component(reports,pagesize,page)
reports['reports'].object_list #获取分页后的数据

http://www.ppmy.cn/embedded/156266.html

相关文章

ios文件管理,沙盒机制以及如何操作“文件”APP,把文件共享到文件app

首先,系统是一个整体,那每个app是相互独立的,系统为每个app分配了一定的存储空间,也就是我们说的沙盒,每个app有自己独立的沙盒,文件存储在沙盒中,正常情况下app相互之间数据是不可以共享以及访…

leetcode169.多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出:3 示例 2…

PHP CRM售后系统小程序

💼 CRM售后系统 📺这是一款基于PHP和uniapp深度定制的CRM售后管理系统,它犹如企业的智慧核心,精准赋能销售与售后管理的每一个环节,引领企业步入精细化、数字化的全新管理时代。系统集成了客户管理、合同管理、工单调…

llama 3 笔记

0.简介 llama 3 是在 15 万亿个 Token 上预训练的语言模型,具有 8B 和 70B 两种参数规模,可以支持广泛的用户场景,在各种行业基准上取得了最先进的性能,并提供了一些新功能,包括改进的推理能力。 1.改进亮点 参数规模与模型架构:Llama 3提供了8B和70B两种参数规模的模…

基于Python django的音乐用户偏好分析及可视化系统设计与实现

1.1 论文背景 随着信息技术的快速发展,在线音乐服务已成为日常生活的重要组成部分。QQ音乐,凭借其创新的音乐推荐算法和独特的社交特性,成功在竞争激烈的市场中获得一席之地。该平台的歌单文化和评论文化不仅满足了用户自尊和自我实现的需求…

利用现有模型处理面部视频获取特征向量(1)

第一步:挑选合适的模型 目前有两个比较符合心意的模型,一个是video-features另外一个是STPN 让我来检验一下,哪一个比较好 STPN 在按照readme安装环境和配置的时候,发现mmpycocotools死活报错,重装Cython至0.29.33…

【深度解析Java 20天速成】04_IDEA的安装与使用

【Why IDEA ?】 【注】JetBrains官方说明: 尽管我们采取了多种措施确保受访者的代表性,但结果可能会略微偏向 JetBrains 产品的用户,因为这些用户更有可能参加调查。 此外,2022年,某美国软件开发商在对近千名专业的Ja…

JAVA-Exploit编写(6)--http-request库文件上传使用

目录 1.http-request简介 2. 依赖导入 3.文件上传页面代码 4. http-request文件上传简单使用 5.请求https的网站解决SSL证书的问题 5. 1 直接请求带https域名的网站 5.2 信任所有证书 1.http-request简介 http-request 是一个库 里面提供很多方法,使得很容易就…