尝试传递一个字符串以通过 Django Rest Framework url 进行查询
Trying to pass a string for querying through Django Rest Framework urls
我有一个 Django 项目,我正在使用 Django Rest Frameowkr。我为用户模型设置了模型、序列化程序、视图和 url。我有 urls 文件。我想在调用 api url 时传递类似用户名的内容。我目前将其设置为具有主键,因此当我输入主键时它可以工作。我想将其切换为用户名。我还希望序列化程序查询 return 用户对象以及我传入的用户名。
我正在使用来自 django.contrib.auth.models
的 Djangos 标准 User
对象
这是我的代码
Urls.py
from django.urls import path
from django.contrib.auth.models import User
from .views import UserListView, UserDetailsView
from .views import ProfileListView, ProfileDetailsView
from .views import RoleListView, RoleDetailsView
urlpatterns = [
path('user/', UserListView.as_view()),
path('user/<pk>', UserDetailsView.as_view()),
]
serializer.py 文件
from rest_framework import serializers
from django.contrib.auth.models import User
from users.models import Profile, Role
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'is_staff', 'last_login')
Views.py 文件
from rest_framework.generics import ListAPIView, RetrieveAPIView
from django.contrib.auth.models import User
from users.models import Profile, Role
from .serializers import UserSerializer, ProfileSerializer, RoleSerializer
class UserListView(ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
class UserDetailsView(RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
在UserDetailsView
中指定lookup_field
并在urls.py
中更改网址格式如下
# urls.py
urlpatterns = [
path('user/', UserListView.as_view()),
path('user/<b><username></b>', UserDetailsView.as_view()),
]
# views.py
class UserDetailsView(RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
<b>lookup_field = 'username'</b>
我有一个 Django 项目,我正在使用 Django Rest Frameowkr。我为用户模型设置了模型、序列化程序、视图和 url。我有 urls 文件。我想在调用 api url 时传递类似用户名的内容。我目前将其设置为具有主键,因此当我输入主键时它可以工作。我想将其切换为用户名。我还希望序列化程序查询 return 用户对象以及我传入的用户名。
我正在使用来自 django.contrib.auth.models
的 Djangos 标准 User
对象
这是我的代码
Urls.py
from django.urls import path
from django.contrib.auth.models import User
from .views import UserListView, UserDetailsView
from .views import ProfileListView, ProfileDetailsView
from .views import RoleListView, RoleDetailsView
urlpatterns = [
path('user/', UserListView.as_view()),
path('user/<pk>', UserDetailsView.as_view()),
]
serializer.py 文件
from rest_framework import serializers
from django.contrib.auth.models import User
from users.models import Profile, Role
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'is_staff', 'last_login')
Views.py 文件
from rest_framework.generics import ListAPIView, RetrieveAPIView
from django.contrib.auth.models import User
from users.models import Profile, Role
from .serializers import UserSerializer, ProfileSerializer, RoleSerializer
class UserListView(ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
class UserDetailsView(RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
在UserDetailsView
中指定lookup_field
并在urls.py
中更改网址格式如下
# urls.py
urlpatterns = [
path('user/', UserListView.as_view()),
path('user/<b><username></b>', UserDetailsView.as_view()),
]
# views.py
class UserDetailsView(RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
<b>lookup_field = 'username'</b>