Python 类型错误:at/';模块';对象不可调用
models.py:Python 类型错误:at/';模块';对象不可调用,python,django,django-rest-framework,Python,Django,Django Rest Framework,models.py: import datetime from django.db import models from pygments.lexers import get_all_lexers LEXERS = [item for item in get_all_lexers() if item[1]] class Classname(models.Model): class_name = models.CharField(max_length=8) def __str_
import datetime
from django.db import models
from pygments.lexers import get_all_lexers
LEXERS = [item for item in get_all_lexers() if item[1]]
class Classname(models.Model):
class_name = models.CharField(max_length=8)
def __str__(self):
return self.class_name
class Sectionname(models.Model):
class_name = models.ForeignKey(Classname)
section_name = models.CharField(max_length=1, default='A')
def __str__(self):
return self.section_name
class Teachername(models.Model):
classname = models.ForeignKey(Classname, verbose_name='class Name')
secname = models.ForeignKey(Sectionname, verbose_name='sectionname')
teachname = models.CharField(max_length=50, verbose_name='teacher Name')
def __str__(self):
return self.teachname
class Attendancename(models.Model):
teacher_name = models.ForeignKey(Teachername)
date = models.DateField('Date')
intime = models.TimeField('IN-TIME')
outtime = models.TimeField('OUT-TIME')
def hours_conversion(self):
tdelta = (datetime.datetime.combine(datetime.date.today(),self.outtime) - datetime.datetime.combine(datetime.date.today(),self.intime))
hours, minutes = tdelta.seconds//3600, (tdelta.seconds//60)%60
return '{0}hrs {1}mins'.format(hours, minutes)
def __str__(self):
return "%s" %self.teacher_name
views.py:
from django.contrib.auth.models import User
from .models import Classname, Sectionname, Teachername, Attendancename
from rest_framework import generics, reverse
from rest_framework.response import Response
from rest_framework.decorators import api_view
from .serializers import ClassSerializer, SectionSerializer, TeacherSerializer, AttendanceSerializer, UserSerializer
from rest_framework.permissions import IsAuthenticatedOrReadOnly
#serializing code starts from here!
@api_view(('GET',)) """when I add this view it raises above exception"""
def api_root(request, format=None):
return Response({
'users': reverse('user-list', request=request, format=format),
'class':reverse('class', request=request, format=format),
'section':reverse('student:section', request=request, format=format),
'teacher':reverse('student:teacher', request=request, format=format),
'attendance':reverse('student:attend', request=request, format=format)
})
class UserList(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
class UserDetail(generics.RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
class ClassList(generics.ListCreateAPIView):
queryset = Classname.objects.all()
serializer_class = ClassSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
class ClassDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Classname.objects.all()
serializer_class = ClassSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
class SectionList(generics.ListCreateAPIView):
queryset = Sectionname.objects.all()
serializer_class = SectionSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
class SectionDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Sectionname.objects.all()
serializer_class = SectionSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
class TeacherList(generics.ListCreateAPIView):
queryset = Teachername.objects.all()
serializer_class = TeacherSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
class TeacherDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Teachername.objects.all()
serializer_class = TeacherSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
class AttendanceList(generics.ListCreateAPIView):
queryset = Attendancename.objects.all()
serializer_class = AttendanceSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
class AttendanceDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Attendancename.objects.all()
serializer_class = AttendanceSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
URL.py:
from django.conf.urls import url, patterns
from . import views
urlpatterns = [
#DRF urls start from here...
url(r'^', views.api_root),
url(r'^users/$', views.UserList.as_view()),
url(r'^users/(?P<pk>[0-9]+)/$', views.UserDetail.as_view()),
url(r'^class/$', views.ClassList.as_view(), name='class'),
url(r'^class/(?P<pk>[0-9]+)/$', views.ClassDetail.as_view(), name='classdet'),
url(r'^section/$', views.SectionList.as_view(), name='section'),
url(r'^section/(?P<pk>[0-9]+)/$', views.SectionDetail.as_view(), name='sectiondet'),
url(r'^teach/$', views.TeacherList.as_view(), name='teacher'),
url(r'^teach/(?P<pk>[0-9]+)/$', views.TeacherDetail.as_view(), name='teacherdet'),
url(r'^attend/$', views.AttendanceList.as_view(), name='attend'),
url(r'^attend/(?P<pk>[0-9]+)/$', views.AttendanceDetail.as_view(), name='attendet'),
]
我正在遵循关于DRF的教程,并在我自己的演示应用程序上尝试它,一切正常,除了尝试在myviews.py文件中添加'root\u api'
视图时,它立即引发上述异常
我想为我的所有视图创建一个单一的入口点,如教程中所示
我不知道为什么它会显示这种行为,因为我在URL中也使用了名称空间。我在哪里做错了吗
求你了!帮我修一下
谢谢!提前….您在导入中遗漏了一些内容。不是
from rest_framework import reverse
但是
请编辑您的帖子并添加完整的错误回溯!谢谢。这是我的全部回溯。。。。
from rest_framework import reverse
from rest_framework.reverse import reverse