Django项目停更3个月后VueJS、jQuery失效无法读写数据库求助
故障排查步骤
- 确认Vue实例挂载元素是否存在:检查你的模板外层是否有id为
conversationapp的父元素,你提供的模板代码里仅包含li标签,没有外层容器的话Vue实例找不到挂载点,所有功能都会失效,插值不会被解析,devtools也自然检测不到Vue组件。 - 排查JS报错:打开浏览器控制台的Console标签,过滤掉fontawesome相关的CORS报错,查看是否存在Vue相关报错,比如「Cannot find element #conversationapp」「Vue is not defined」这类提示。如果有Vue未定义的报错,说明你当前使用的jsdelivr CDN资源访问失败,该CDN部分资源在国内访问不稳定。
- 检查Django模板变量是否正确传递:确认加载template.html的视图有没有传入
conversation变量,你代码中使用了{{ conversation.id }},如果这个变量不存在会直接导致JS语法错误,整个Vue实例初始化失败。 - 排查Django接口问题:你的
api_add_message接口写完创建逻辑后没有返回值,也没有异常处理,哪怕创建成功也会默认返回200空响应;且@login_required装饰器如果检测到用户未登录会重定向到登录页,fetch请求遇到重定向不会自动处理。 - 检查Django配置改动:如果休假前修改过
STATIC_URL、安全类配置或者开启了静态资源压缩工具,可能会阻断内联JS的执行,可先打开Django的DEBUG模式,查看是否有静态资源加载失败的提示。
修复方案
- 补充Vue挂载容器:在现有li标签外层添加对应的
<div id="conversationapp">和闭合标签,确保挂载点存在。 - 修复Django接口逻辑,修改
api.py代码如下:
import json from django.http import JsonResponse from django.contrib.auth.decorators import login_required from django.views.decorators.http import require_POST from .models import ConversationMessage @login_required @require_POST def api_add_message(request): try: data = json.loads(request.body) content = data['content'] conversation_id = data['conversation_id'] message = ConversationMessage.objects.create( conversation_id=conversation_id, content=content, created_by=request.user ) return JsonResponse({'code': 0, 'message': '创建成功', 'id': message.id}) except Exception as e: return JsonResponse({'code': 1, 'message': str(e)}, status=400)
- 替换不稳定的CDN资源,将Vue的CDN地址替换为国内可稳定访问的版本:
<script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-100-M/vue/2.6.14/vue.min.js"></script>
- 补充调试逻辑:在Vue实例代码开头添加
console.log('Vue加载状态:', typeof Vue),确认Vue加载正常,同时确认视图中已正确传入conversation变量。
内容的提问来源于stack exchange,提问作者Immortal Noob
相关产品推荐
相关产品推荐

