一个URL用于id而不是id的视图

时间:2017-05-01 04:31:29

标签: python django django-urls

是否有办法只使用一个URL来显示带有id(令牌)和没有id(令牌)的内容。例如,如果未提供令牌,则存在显示用户的配置文件列表的视图,否则显示具有传递的令牌的特定用户。

这是一个视图

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(
      r'^users/$',
      views.UserList.as_view(),
      name="user_list"
  ),
url(
   r'^users/(?P<token>[0-9a-z]+)$',
   views.UserList.as_view(),
   name="user_profile"
),

有没有办法只有一个网址?

1 个答案:

答案 0 :(得分:1)

当然,有办法。只需将if (RedisConn == null) { ConfigurationOptions option = new ConfigurationOptions { AbortOnConnectFail = false, EndPoints = { redisEndpoint } }; RedisConn = ConnectionMultiplexer.Connect(option); } url参数设为可选。像这样:

token

请注意尾随url(r'^users/(?P<token>[0-9a-z]+)?$', views.UserList.as_view(), name='user_profile'), ,表示?的0或1个匹配。如果提供了token那么它将是提供的值(显然!)。如果没有,则为token