我正在尝试使用正则表达式来捕获用户的用户名,并使用CBV返回显示正确用户信息的JSON响应,但是出现了我不明白的错误。
首先,这是我遇到的错误:
url(r'^ userprofile /(?P [\ w。@ +-] +)',UserProfile.as_view()), NameError:名称“ UserProfile”未定义
我还有其他可以正常工作的URL捕获,它们都是CBV,就像这样,格式相同。
这是URL捕获代码:
url(r'^userprofile/(?P<username>[\w.@+-]+)', UserProfile.as_view())
这是CBV:
class UserProfile(APIView):
def get(self, request, username):
obj = User.objects.get(username=username)
serializer = UserSerializer(obj, many=True)
return JsonResponse(serializer.data, safe=False)
这是UserSerializer:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('__all__')
这是用户模型:
class User(AbstractUser):
birthdate = models.DateField(null=True)
gender = models.CharField(
max_length=1,
choices=(('M', 'Male'), ('F', 'Female'), ('O', 'Other'), ('U',
'Unspecified')),
default='Unspecified'
)
renewal = models.DateField(null=True)
def __str__(self):
return '%s %s' % (self.first_name, self.last_name)
这可能很简单,但是我不知道为什么会引发此错误。请指教。谢谢。
答案 0 :(得分:2)
这不是正则表达式错误。该消息准确地说明了什么:这是一个NameError,因为未定义UserProfile。您需要将其导入到使用它的urls.py中。