Django TypeError - TypeError: issubclass() arg 1 必须是一个类
Posted
技术标签:
【中文标题】Django TypeError - TypeError: issubclass() arg 1 必须是一个类【英文标题】:Django TypeError - TypeError: issubclass() arg 1 must be a class 【发布时间】:2021-10-12 09:09:47 【问题描述】:我想在 django 应用程序中迁移我的配置,但控制台下方是 不工作。
python3 manage.py 迁移
python3 manage.py makemigrations
Traceback (most recent call last):
File "/usr/src/frontend/manage.py", line 22, in <module>
main()
File "/usr/src/frontend/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/home/mungmung01/.local/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/home/mungmung01/.local/lib/python3.9/site-packages/django/core/management/__init__.py", line 395, in execute
django.setup()
File "/home/mungmung01/.local/lib/python3.9/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/mungmung01/.local/lib/python3.9/site-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "/home/mungmung01/.local/lib/python3.9/site-packages/django/apps/config.py", line 228, in create
if not issubclass(app_config_class, AppConfig):
TypeError: issubclass() arg 1 must be a class
我不知道出了什么问题。我在 django 应用程序中的配置很短。
这是我的 urls.py
from django.contrib import admin
from django.urls import path
from mungmung01.views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('', MainPage.as_view())
]
这是我的models.py
from django.db import models
from django.db.models.deletion import CASCADE
# 전체 데이터모델은 이곳에 구현되어 있습니다.
# PositiveInteger = unsigned int입니다.
class MainPageVisitor(models.Model):
VisitorNum = models.PositiveIntegerField(primary_key=True, null=False) # 방문객번호
NumVisit = models.PositiveSmallIntegerField(null=False) # 방문한 횟수
ipAddress = models.GenericIPAddressField() # ip주소
TimeVisited = models.DateTimeField(null=False) # 방문시간
TimeLeft = models.DateTimeField(null=False) # 떠난시간
Service = models.SmallIntegerField() # 이용한 서비스. 1=홀랜드 | 2=철학 | 3=엔지니어링 | 4=질의응답
这是我的意见.py
from django.http import request
from django.shortcuts import render
from django.contrib.auth.signals import user_logged_out # 클라이언트가 접속을 종료하는 시간을 재기 위해 추가
from django.views import ListView # 클래스형 뷰를 사용하기 위해 추가
from django.template import *
from .models import MainPageVisitor
from .views import MainPage
from ipware.ip import get_ip # ip주소 받기 위해 추가
from .views import *
import datetime
import pytz
class MainPage(ListView):
visitornum = 0
timeleft = user_logged_out.connect(request) # 떠난 시간
def __init__(self, Visitor: MainPageVisitor, Page: MainPage):
ip = get_ip(request)
whethernewly = Visitor.objects.filter(ipAddress = ip) # 이 사이트에 방문한 적이 없는 경우 빈 리스트가 반환됩니다.
if (whethernewly == []):
Visitor.objects.create(VisitorNum = Page.visitornum, NumVisit = 1, ipAddress = ip,
TimeVisited = datetime.datetime.now(pytz.timezone('Asia/Seoul')), TimeLeft = Page.timeleft)
else:
Visitor.objects.create(VisitorNum = Page.visitorNum, NumVisit = len(whethernewly), ipAddress = ip,
TimeVisited = datetime.datetime.now(pytz.timezone('Asia/Seoul')), TimeLeft = Page.timeleft, Service = 1)
def get(self, request):
return render(request, 'index.html', context)
def __del__(self, Page: MainPage):
Page.visitornum += 1
在views.py中,我没有放Service列的值,但我想这不是问题。有问题吗?
而且任何配置都不存在。
ps。请忽略韩语评论。
【问题讨论】:
似乎是INSTALLED_APPS
的问题。你能展示一下你的应用配置吗?
【参考方案1】:
这个views.py比上面views.py好
from mungmung01.models import *
from django.shortcuts import render # html 파일 띄우기 위해 추가
from django.views import View # 클래스형 뷰를 사용하기 위해 추가
import datetime
import pytz
class MainPage(View):
Visitor = MainPageVisitor # 다른 클래스 뷰에서 재정의 될 변수 2개만 정적 변수로 선언함.
visitornum = len(Visitor.objects.all())
def get(self, request):
global visitornum # 나머지 변수 2개는 메소드 멤버로 선언
timeVisited = datetime.datetime.now(pytz.timezone('Asia/Seoul'))
if request.user.is_authenticated == False: # 접속이 종료될 때 실행
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') # ip 주소 변수
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
whethernewly = self.Visitor.objects.filter(ipAddress = ip) # 이 사이트에 방문한 적이 없는 경우 빈 리스트가 반환됩니다.
if (whethernewly == []):
self.Visitor.objects.create(VisitorNum = self.visitornum, NumVisit = 1, ipAddress = ip,
TimeVisited = timeVisited, TimeLeft = datetime.datetime.now(pytz.timezone('Asia/Seoul')))
else:
self.Visitor.objects.create(VisitorNum = self.visitornum, NumVisit = len(whethernewly), ipAddress = ip,
TimeVisited = timeVisited, TimeLeft = datetime.datetime.now(pytz.timezone('Asia/Seoul')))
return render(request, request.get_full_path()[1:] + '/index.html', 'visitornum': self.visitornum)
【讨论】:
【参考方案2】:我配置views.py 看起来像这样。而且很成功。
from django.http import request
from django.shortcuts import render
from django.contrib.auth.signals import user_logged_out # 클라이언트가 접속을 종료하는 시간을 재기 위해 추가
from django.views import View # 클래스형 뷰를 사용하기 위해 추가
from django.template import *
from typing import TypeVar # 제네릭을 쓰기 위해 추가
from ipware.ip import get_ip # ip주소 받기 위해 추가
from .views import *
import datetime
import pytz
MainPageVisitor = TypeVar('MainPageVisitor')
class MainPage(View):
visitornum = 0
timeleft = user_logged_out.connect(request) # 떠난 시간
def __init__(self, Visitor: MainPageVisitor):
ip = get_ip(request)
whethernewly = Visitor.objects.filter(ipAddress = ip) # 이 사이트에 방문한 적이 없는 경우 빈 리스트가 반환됩니다.
if (whethernewly == []):
Visitor.objects.create(VisitorNum = self.visitornum, NumVisit = 1, ipAddress = ip,
TimeVisited = datetime.datetime.now(pytz.timezone('Asia/Seoul')), TimeLeft = self.timeleft)
else:
Visitor.objects.create(VisitorNum = self.visitorNum, NumVisit = len(whethernewly), ipAddress = ip,
TimeVisited = datetime.datetime.now(pytz.timezone('Asia/Seoul')), TimeLeft = self.timeleft, Service = 1)
def get(self, request):
return render(request, 'index.html', context)
def __del__(self):
self.visitornum += 1
【讨论】:
以上是关于Django TypeError - TypeError: issubclass() arg 1 必须是一个类的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:无法使用“in”运算符在未定义中搜索“$__firebase”
无法从 nextjs 中的 api 获取图像-TypeError:无法读取未定义的属性(读取“地图”)NEXTJS
Django:'TypeError:'HttpResponseForbidden'对象不可调用
django:TypeError:'tuple'对象不可调用