Python ';无类型';对象没有属性';id';热解析类型错误
这是一个医疗库存系统。 似乎无法绕过此类型错误。我不熟悉python和django。 我看过其他类似的错误,但没有找到解决办法。这是主目录中的my views.py文件 请帮忙……谢谢Python ';无类型';对象没有属性';id';热解析类型错误,python,django,Python,Django,这是一个医疗库存系统。 似乎无法绕过此类型错误。我不熟悉python和django。 我看过其他类似的错误,但没有找到解决办法。这是主目录中的my views.py文件 请帮忙……谢谢 from django.shortcuts import render, redirect, Http404, get_object_or_404 from django.contrib.auth.decorators import login_required from django.http import H
from django.shortcuts import render, redirect, Http404, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect, JsonResponse
from accounts.models import Registration, YearEnding
from home.backup import BackupDatabase
@login_required(login_url='/account/login/')
def HomePage(request):
if not request.user.is_authenticated():
raise Http404
try:
** current_session_id = request.session['session'] **
except:
** currentSession = YearEnding.objects.order_by("-id").first() **
** request.session['session'] = currentSession.id **
current_session_id = currentSession.id
current_session = get_object_or_404(YearEnding, id = current_session_id)
return render(request, 'home/index.html', {"current_session":current_session})
@login_required(login_url='/account/login/')
def takeBackup(request):
if request.method == "GET" and request.is_ajax():
forcefully = request.GET.get("forcefully")
backup = BackupDatabase()
response = backup.run(forcefully = int(forcefully))
if response["code"] == 200:
return JsonResponse(response, status=200)
else:
return JsonResponse(response, status=400)
else:
return JsonResponse({}, status=400)
根据:
返回查询集匹配的第一个对象,如果没有匹配的对象,则返回None
表示如果未创建YearEnding
实例,则YearEnding.objects.order\u by(“-id”)。first()
将返回None
。所以你需要创建一个。您可以从管理站点或shell执行此操作。例如:
>> python manage.py shell
>> [python] from my_app.models import YearEnding
>> [python] YearEnding.objects.create(field1=value1,field2=value2)
还有一个建议,您可以删除此代码:
if not request.user.is_authenticated():
raise Http404
因为您使用的是
@login\u required
decorator,它将自动阻止未登录用户进入此视图。是否currentSession=YearEnding.objects.order\u by(“-id”).first()
存在?否,我的意思是如果查询实际返回任何结果,因为在另一种情况下,它将返回None
,您将得到类型错误。哦,好的,我明白了。。。没有返回结果。它甚至还没完成呢……非常感谢。我已经解决了这个错误。很简单,现在已经修好了。太棒了。那就请吧。谢谢:)