我正在构建Django + Angular2项目。
我有侧边栏,需要在Settings
添加/users/{{ user.id }}
,它会在与bug一起使用时发送到<li *ngFor="let user of users"><a routerLink="/users/{{ user.id }}" style="cursor: pointer">Settings</a></li>
,当我登录时,这个:
for loop
不会显示,因为getUsers() {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
let authToken = localStorage.getItem('auth_token');
headers.append('Authorization', `JWT ${authToken}`);
return this.http
.get(this.apiURL, { headers })
.toPromise()
.then(res => res.json());
}
不会有任何数据。如果我刷新页面,它将显示在侧边栏中,并将完美。主要思想是为授权用户打开设置。
这就是我获得用户的方式:
class UserViewSet(viewsets.ModelViewSet):
serializer_class = UserSerializer
def get_queryset(self):
user = self.request.user
queryset = User.objects.filter(id=user.id)
return queryset
queryset = User.objects.filter(id=None)
问题是我需要使用for循环,因为在django框架中我过滤对象并获取项目列表。实际上我过滤它们只是为了获得一个当前登录的用户(来自views.py的代码):
for loop
是否有办法只获得一个不是数据列表的对象,而不是在角度中使用ngOnInit(): void {
this.userService
.getUsers()
.then(users => this.users = users)
}
(可能会修复错误)。或者也许你可以解释我并说出如何解决这个问题,即设置消失并仅在刷新后显示。实际上我认为我肯定会在错误的组件或错误的方式中使用getUsers函数。
我的app.component.ts:
gradle clean build
我不确定问题出在哪里以及为什么在登录循环后没有数据,所以我不知道你需要什么样的代码来帮助我。如果需要更多代码,请问。
答案 0 :(得分:0)
我找到了解决方案,问题是我使用ngOnInit()
并且它在用户未登录时第一次加载并提供html空变量,因此无法循环。
目前我使用ngDoCheck()
检查是否是会话。
示例:
this.isSession = localStorage.getItem('auth_token');
if ((this.isSession != null) && (this.i == false)){
this.userService
.getUsers()
.then(users => this.users = users);
this.i = true;
}
}