小编afk*_*afk的帖子

类型对象“用户”没有属性“对象 django”

我正在尝试使用 jwt 令牌从 api 获取用户列表,因此我生成了令牌和电子邮件并通过,并尝试使用令牌发出获取请求,但我得到了这个错误:

File "/home/tboss/Desktop/environment/liveimages/backend/venv/lib/python3.7/site-packages/rest_framework_simplejwt/authentication.py", line 111, in get_user
user = User.objects.get(**{api_settings.USER_ID_FIELD: user_id})
rest_framework.request.WrappedAttributeError: type object 'User' has no attribute 'objects'
Run Code Online (Sandbox Code Playgroud)

我已经创建了自定义用户

视图.py:

from users.models import User
from rest_framework import viewsets
from rest_framework.decorators import api_view, permission_classes, authentication_classes  
from rest_framework.permissions import AllowAny, IsAuthenticated
from rest_framework.status import  (
HTTP_400_BAD_REQUEST,
HTTP_404_NOT_FOUND,
HTTP_200_OK)
from . import serializers
from rest_framework.response import Response
from rest_framework.authentication import TokenAuthentication, SessionAuthentication



class UserViewSet(viewsets.ModelViewSet):
queryset = User.object.all()
serializer_class = serializers.UserSerializers
Run Code Online (Sandbox Code Playgroud)

设置.py:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES':(
    'rest_framework_simplejwt.authentication.JWTAuthentication',

),
'DEFAULT_PERMISSION_CLASSES':( …
Run Code Online (Sandbox Code Playgroud)

django python-3.x django-rest-framework django-rest-framework-jwt

5
推荐指数
1
解决办法
4556
查看次数

未提供身份验证凭据 drf

当我尝试访问 api 时,出现此错误:

 "detail": "Authentication credentials were not provided."
Run Code Online (Sandbox Code Playgroud)

我已将其包含在 settings.py 中:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES':(
    'rest_framework.authentication.TokenAuthentication',
    'rest_framework.authentication.SessionAuthentication',


),
'DEFAULT_PERMISSION_CLASSES':(
    'rest_framework.permissions.IsAuthenticated',
)

}
Run Code Online (Sandbox Code Playgroud)

我的应用程序 api urls.py:

from django.urls import path,include
from . import views
from rest_framework import routers

router = routers.SimpleRouter()
router.register(r'',views.UserViewSet, 'user_list')
urlpatterns = router.urls
Run Code Online (Sandbox Code Playgroud)

我的观点.py:

class UserViewSet(viewsets.ModelViewSet):
       queryset = User.object.all()
       serializer_class = serializers.UserSerializers
Run Code Online (Sandbox Code Playgroud)

序列化器.py:

from rest_framework import serializers
from users.models import User


class UserSerializers(serializers.ModelSerializer):
  class Meta:
    model = User
    fields = ('email','password')
Run Code Online (Sandbox Code Playgroud)

我的主要 urls.py:

urlpatterns = [
path('admin/', …
Run Code Online (Sandbox Code Playgroud)

django python-3.x django-rest-framework

3
推荐指数
1
解决办法
6633
查看次数

create_user() 缺少 1 个必需的位置参数:“密码”

我正在使用电子邮件而不是用户名进行身份验证,并且我尝试添加谷歌身份验证一切工作正常,但这是我收到的错误:

File "/home/tboss/Desktop/environment/liveimages/backend/venv/lib/python3.7/site-packages/social_django/storage.py", line 79, in create_user
user = cls.user_model().objects.create_user(*args, **kwargs)
TypeError: create_user() missing 1 required positional argument: 'password'
Run Code Online (Sandbox Code Playgroud)

用户模型:

class UserManager(BaseUserManager):
      def _create_user(self, email, password, is_staff, is_superuser, **extra_fields):
          if not email:
             raise ValueError('user must have email address')
          now = timezone.now()
          email = self.normalize_email(email)
          user = self.model(
                  email=email,
                  is_staff=is_staff,
                  is_active=True,
                  is_superuser=is_superuser,
                  last_login=now,
                  date_joined=now,
                  **extra_fields
                   )
         user.set_password(password)
         user.save(using=self._db)
         return user
     def create_user(self, email, password, **extra_fields):
         return self._create_user(email, password, False, False, **extra_fields)

     def create_superuser(self, email, password, **extra_fields):
         user=self._create_user(email, password, True, True, **extra_fields) …
Run Code Online (Sandbox Code Playgroud)

django python-3.x google-oauth

2
推荐指数
1
解决办法
5135
查看次数

搜索过滤器 django drf

我想一次获取图像作为多个搜索关键字:

视图.py:

class ImageSearchView(generics.ListAPIView):
      authentication_classes = []
      permission_classes = []
      queryset = Image.objects.all()
      serializer_class = ImageSearchSerializer
      filter_backends = (filters.SearchFilter,)
      search_fields = ['image_keyword']
Run Code Online (Sandbox Code Playgroud)

模型.py:

class Image(models.Model):
      license_type = (
         ('Royalty-Free','Royalty-Free'),
         ('Rights-Managed','Rights-Managed')
       )
      image_number = models.CharField(default=random_image_number,max_length=12,unique=True)
      title = models.CharField(default=random_image_number,max_length = 100)
      image = models.ImageField(upload_to = 'image' , default = 'demo/demo.png')
      thumbnail = models.ImageField(upload_to='thumbs', blank=True, null=True)
      category = models.ForeignKey('Category', null=True, blank=True, on_delete=models.CASCADE)
      shoot = models.ForeignKey(ImageShoot, on_delete=models.CASCADE, related_name='Image', null=True,blank=True)
      image_keyword = models.TextField(max_length=1000)


      def __str__(self):
         return self.title
Run Code Online (Sandbox Code Playgroud)

网址.py:

    path('image_search/',views.ImageSearchView.as_view(), name = 'image_search'),
Run Code Online (Sandbox Code Playgroud)

当我向邮递员提出请求时:

localhost:8000/api/image_search?search=boxing cricket …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

1
推荐指数
1
解决办法
1万
查看次数

如何在同一台服务器(Digitalocean或aws)上部署react作为前端和drf(djangorest框架)

我有 Django 反应应用程序。我使用 drf 作为 API 并使用 React 作为前端。我想将它们分别部署在同一服务器上的数字海洋上。有什么建议么?

django django-rest-framework reactjs digital-ocean

0
推荐指数
1
解决办法
2223
查看次数