我正在尝试获取与登录用户相关的数据列表,我正在使用vuejs,axios和drf。双面打开了corsheader。我成功获取身份验证令牌,更改状态并将其保存在本地存储中。获取用户指定数据的代码失败,这是我的代码:
class blogsListView(generics.ListAPIView):
def get_queryset(self):
return CodeNote.objects.filter(user=self.request.user)
serializer_class = blogsSerializer
<script>
import axios from "axios";
const API_URL = "http://127.0.0.1:8000/";
export default {
name: "myBlogs",
data: () => ({
blogs: []
}),
mounted() {
let token = localStorage.getItem("TOKEN_STORAGE_KEY");
console.log(token);
axios
.get(API_URL + "blogs/mylist", {
headers: { Authorization: "Token " + token }
})
.then(response => {
this.blogs = response;
})
.catch(e => {
this.errors.push(e);
});
}
};
</script>
控制台成功显示令牌。我不确定我是否正在做正确的请求,或问题是过滤。
您需要做的检查很少。
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES':(
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}
class blogsListView(generics.ListAPIView):
queryset = CodeNote.objects.all()
serializer_class = blogsSerializer
permission_classes = [IsAuthenticated
def get_queryset(self):
if self.request.user.is_authenticated:
return CodeNote.objects.filter(user=self.request.user)
return []
class blogsListView(generics.ListAPIView):
queryset = CodeNote.objects.all()
serializer_class = blogsSerializer
# permission_classes = [IsAuthenticated]
def get_queryset(self):
if self.request.user.is_authenticated:
return CodeNote.objects.filter(user=self.request.user)
return []
它成功了,谢谢@bkwan的帮助,我添加了休息框架设置,并编辑了这样的axios请求:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES':(
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}
def get_queryset(self):
if self.request.user.is_authenticated:
return CodeNote.objects.filter(user=self.request.user)
return []
axios
.get(API_URL + "blogs/mylist", {
headers: { Authorization: `Token ${token}` }
})