Django Admin添加页Summernote报错:TypeError: $ is not a function
Django Summernote 「$ is not a function」错误修复方案
核心原因
尽管Network显示jQuery已加载,但summernote初始化时无法访问$,通常是加载顺序错误或**$被其他脚本覆盖**导致。
解决步骤
强制指定jQuery优先加载
在你的模型Admin类中手动定义静态资源加载顺序,确保jQuery在summernote之前:from django.contrib import admin from .models import YourModel class YourModelAdmin(admin.ModelAdmin): class Media: js = ( 'jquery/jquery.min.js', # 本地或CDN的jQuery路径 'summernote/summernote.min.js', 'summernote/lang/summernote-zh-CN.min.js', ) css = { 'all': ('summernote/summernote.min.css',) } admin.site.register(YourModel, YourModelAdmin)注:使用CDN的话,替换为
'https://code.jquery.com/jquery-3.7.1.min.js'这类地址即可。避免
$作用域冲突
修改summernote的初始化逻辑,用jQuery替代$,或者用自执行函数锁定作用域:jQuery(document).ready(function($) { // 这里可以安全使用$ initSummernote_id_content(); });也可以直接修改
initSummernote_id_content函数内的所有$为jQuery。验证静态资源配置
- 确认
INSTALLED_APPS包含'django_summernote' - 生产环境执行
python manage.py collectstatic确保静态文件被正确收集 - 开发环境保持
DEBUG=True,确保静态资源路由生效
- 确认
清理浏览器缓存
按Ctrl+Shift+R强制刷新页面,避免旧缓存导致的资源加载异常。
错误详情:
add/:814 Uncaught TypeError: $ is not a function<br>at initSummernote_id_content (add/:814:5)<br>at add/:954:5
内容的提问来源于stack exchange,提问作者Lawrence DeSouza
相关产品推荐
相关产品推荐

