You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用API时出现'WSGIRequest'无'get'属性错误的原因及解决

错误原因

你在CourseInfo视图里犯了基础用法错误:调用了Django请求对象request的get()方法,但Django的WSGIRequest类根本没有这个方法。你本意是发起GET请求调用自己的API,但混淆了Django请求对象与HTTP请求库的用法——request.get()并不是发起HTTP请求的正确方式。

解决方案

方案1:用requests库发起HTTP请求调用API

首先确保安装requests库:

pip install requests

修改views.py代码:

import requests
from django.shortcuts import render
from .models import Course
from .serializers import CourseSerializer

class CourseViewSet(ModelViewSet):
    queryset = Course.objects.all()
    serializer_class = CourseSerializer

def CourseInfo(request):
    # 用requests库发起GET请求调用内部API
    api_response = requests.get('http://127.0.0.1:8000/api/courses/')
    callApi = api_response.json()
    
    context = {
        "queryset": callApi
    }
    return render(request, 'insert.html', context)

方案2:直接查询数据库(同项目内优先推荐)

因为是同一个Django项目,没必要通过HTTP请求绕圈,直接查询数据库并序列化效率更高:

from django.shortcuts import render
from .models import Course
from .serializers import CourseSerializer

class CourseViewSet(ModelViewSet):
    queryset = Course.objects.all()
    serializer_class = CourseSerializer

def CourseInfo(request):
    # 直接查询数据库并序列化数据
    callApi = CourseSerializer(Course.objects.all(), many=True).data
    
    context = {
        "queryset": callApi
    }
    return render(request, 'insert.html', context)

额外补充:处理POST表单提交

从错误信息可知当前请求是POST方法,应该是提交课程表单。如果需要处理表单数据,补充POST逻辑:

from django.shortcuts import render
from .models import Course
from .serializers import CourseSerializer

class CourseViewSet(ModelViewSet):
    queryset = Course.objects.all()
    serializer_class = CourseSerializer

def CourseInfo(request):
    if request.method == 'POST':
        # 获取表单提交的课程名称
        course_name = request.POST.get('coursename')
        # 将数据保存到数据库(若模型有其他字段,需对应调整)
        Course.objects.create(name=course_name)
    
    # 获取所有课程数据传递给模板
    callApi = CourseSerializer(Course.objects.all(), many=True).data
    
    context = {
        "queryset": callApi
    }
    return render(request, 'insert.html', context)

内容的提问来源于stack exchange,提问作者Mossaddak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:41:03