DRF实现HTML转PDF遇问题,get_template异常导致返回None
排查Django get_template生成PDF异常的解决步骤
以下是针对你遇到的get_template函数异常、导致PDF生成失败返回None的问题,逐一排查的解决方法:
检查模板路径配置
确认Django项目的settings.py中TEMPLATES配置正确:- 若模板放在项目根目录的
templates文件夹下,需确保DIRS包含该路径; - 若模板放在某个APP的
templates文件夹下,需开启APP_DIRS: True,这样Django会自动扫描各APP下的模板目录。
示例配置:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]- 若模板放在项目根目录的
确认模板文件的路径写法
- 如果模板在APP的
templates目录下,调用get_template时需要加上APP名称前缀,比如APP名为invoice_app,则路径应为invoice_app/invoice.html; - 核对文件名拼写,注意Linux系统下文件名区分大小写,确保和代码中的写法完全一致。
- 如果模板在APP的
打印完整异常栈定位问题
当前代码仅打印简单错误信息,建议修改异常处理逻辑,输出完整的异常栈,以便精准定位问题:except Exception as e: import traceback traceback.print_exc() print('ERROR', e)这样能看到是模板文件不存在、模板语法错误还是其他加载问题。
排查模板语法错误
即使路径正确,模板内的语法错误(比如标签未闭合、无效变量引用)也会在template.render()时抛出异常,通过完整异常栈可以直接看到错误所在的行号和具体原因,针对性修复即可。
内容的提问来源于stack exchange,提问作者Sins97
相关产品推荐
相关产品推荐

