一个 url 用于具有 ID 和不具有 ID 的视图
one url for views with id and not with id
有没有办法只使用一个 url 的视图来显示带 id(token) 和不带 id(token) 的内容。例如,如果未提供令牌,则有一个视图显示用户配置文件列表,否则显示具有传递的令牌的特定用户。
这是一个视图
def get(self, request, token=None, format=None):
"""
Returns a list of profile of user or single user if token is provided
"""
reply={}
try:
profile_instance = Profile.objects.filter(user=self.request.user)
if token:
profile = profile_instance.get(token=token)
reply['data'] = self.serializer_class(profile).data
else:
reply['data'] = self.serializer_class(profile_instance, many=True).data
except:
reply['data']=[]
return Response(reply, status.HTTP_200_OK)
url 会是这样的
url(
r'^users/$',
views.UserList.as_view(),
name="user_list"
),
url(
r'^users/(?P<token>[0-9a-z]+)$',
views.UserList.as_view(),
name="user_profile"
),
有没有办法只有一个url?
当然有办法。只需将 token
url 参数设为可选即可。像这样:
url(r'^users/(?P<token>[0-9a-z]+)?$', views.UserList.as_view(), name='user_profile'),
注意尾随 ?
,这意味着 token
的 0 或 1 个匹配项。如果提供了 token
那么它将是提供的值(显然!)。如果不是,它将是 None
.
有没有办法只使用一个 url 的视图来显示带 id(token) 和不带 id(token) 的内容。例如,如果未提供令牌,则有一个视图显示用户配置文件列表,否则显示具有传递的令牌的特定用户。
这是一个视图
def get(self, request, token=None, format=None):
"""
Returns a list of profile of user or single user if token is provided
"""
reply={}
try:
profile_instance = Profile.objects.filter(user=self.request.user)
if token:
profile = profile_instance.get(token=token)
reply['data'] = self.serializer_class(profile).data
else:
reply['data'] = self.serializer_class(profile_instance, many=True).data
except:
reply['data']=[]
return Response(reply, status.HTTP_200_OK)
url 会是这样的
url(
r'^users/$',
views.UserList.as_view(),
name="user_list"
),
url(
r'^users/(?P<token>[0-9a-z]+)$',
views.UserList.as_view(),
name="user_profile"
),
有没有办法只有一个url?
当然有办法。只需将 token
url 参数设为可选即可。像这样:
url(r'^users/(?P<token>[0-9a-z]+)?$', views.UserList.as_view(), name='user_profile'),
注意尾随 ?
,这意味着 token
的 0 或 1 个匹配项。如果提供了 token
那么它将是提供的值(显然!)。如果不是,它将是 None
.