Как заблокировать доступ к странице для другого вошедшего пользователя в django?
Я пытаюсь заблокировать доступ вошедшего пользователя к странице обновления профиля другого пользователя.
Моя ситуация:
Предположим, что человек A вошел в свой профиль и знает URl обновления профиля другого пользователя. В этой ситуации он может просто получить доступ к URL обновления профиля другого пользователя. Таким образом, я хочу ограничить это ограничение только для того же пользователя, который вошел в систему, чтобы обновлять только свой профиль.
вот мой код для обновления профилей:
@login_required
def UpdateProfile(request, slug):
user = Profile.objects.get(slug=slug)
if request.method == "POST":
form = UpdateProfileForm(request.POST, request.FILES, instance=user)
if form.is_valid():
profile_pic = form.cleaned_data['profile_pic']
form.profile_pic = profile_pic
form.save()
messages.success(request,"Data Updated successfully")
return HttpResponseRedirect(reverse('updateaddress', args=(request.user.profile.slug,)))
else:
messages.error(request, "Please check all fields are valid")
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
else:
form = UpdateProfileForm(instance=user)
context = {
'user':user,
'form':form,
}
return render(request, "authentication/register/update/profile.html",context)
urls.py
path("<slug:slug>/update-profile/", UpdateProfile, name="updateprofile"),
Вы можете поступить следующим образом:
@login_required
def UpdateProfile(request, slug):
user = Profile.objects.get(slug=slug)
if user.id == request.user.id:
# do something if the id of user you get from the slug matches the actual user id
if request.method == "POST":
form = UpdateProfileForm(request.POST, request.FILES, instance=user)
if form.is_valid():
# yada yada yada
Вы можете сравнить объект пользователя, как показано ниже
@login_required
def UpdateProfile(request, slug):
user = Profile.objects.get(slug=slug)
if user != request.user:
message.info("You can't update the other user profile")
return
Как описано здесь в документах django :-. https://docs.djangoproject.com/en/4.0/topics/db/queries/#comparing-objects