0

这是被称为在/posts/{id}我DRF观点:为什么AngularJS读取DRF API返回的整数'3'为'%203`?

class PostViewSet(mixins.CreateModelMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.DestroyModelMixin, GenericViewSet): 
    serializer_class = PostSerializer 
    permission_classes = (IsAuthenticated, IsActualOwnerDelete,) 

    def get_queryset(self): 
     # new posts from location. 
     return Post.objects.filter(location=self.request.user.userextended.location).order_by('-createdAt') 

    def perform_create(self, serializer): 
     serializer.save(actualOwner=self.request.user) 

    @list_route(permission_classes=[IsAuthenticated]) 
    def mymostrecent(self, request): 
     me = request.user 
     try: 
      # this gets the most recent post's ID 
      post = me.post_mine_set.latest('id') 
      did = post.id 
     except Post.DoesNotExist: 
      did = 0 
     return Response(did) 

现在有棱有角,当我这样做的URL /posts/mymostrecent

return $http.get("/api/posts/mymostrecent") 
.then(function(response) { 
    console.log(response); 
    $location.url('/posts/ ' + response.data); 
}) 

记录的内容是这样的:

Object {data: 3, status: 200, config: Object, statusText: "OK"} 

但URL变成这样:

/posts/%203 

它仍然工作,并显示正确的HTML页面,但我如何摆脱URL中的%20

这是我models.py(可能并不需要):

class Post(models.Model): 
    owner = models.ForeignKey(User) 
    usersVoted = models.ManyToManyField(User, blank=True, related_name="%(class)s_voted_set") 
    post = models.CharField(max_length=400) 
    createdAt = models.DateTimeField(auto_now_add=True, blank=True) 
    actualOwner = models.ForeignKey(User, related_name="%(class)s_mine_set") 
+1

%20是空间的URL编码 – dentemm

回答

4

问题是与这部分代码,您在这方面是增加了额外的空间$location.url('/posts/ ' + response.data);

return $http.get("/api/posts/mymostrecent") 
.then(function(response) { 
    console.log(response); 
    $location.url('/posts/' + response.data); #Removed the space after '/posts/ ' ie. change '/posts/ ' to '/posts/' 
}) 
相关问题