Расшифровка идентификатора URL в django

Я пытался расшифровать Update URL id до зашифрованного формата в url.

на странице профиля пользователя есть одна кнопка редактирования, которая содержит url вида обновления.

# Страница моего профиля. код

def profile(request):
    lst = request.user.id #This line is the problem
    l=[]
    for i in lst:
        i['encrypt_key']=encrypt(i['id'])
        i['id']=i['id']
        l.append(i)
    return render(request, 'profile.html', {'lst':l})

#Код представления обновления

def update(request, id):
    id=decrypt(id)
    #Update code.
    return render(request, 'edit_profile.html', context)

На странице профиля для этой кнопки редактирования, поскольку это итеративный цикл for. Я закодировал вот так шаблон Html

<li class="ctx-item">
          <button class="ctx-menu-btn icon-box">
                      <span class="material-symbols-rounded  icon" aria-hidden="true">edit</span>
                      {% for x in lst %}
                      <span class="ctx-menu-text"><a href="/update/{{x.encrypt_key}}">Edit</a></span>
                      {% endfor %}
                    </button>
                  </li>

Поскольку в моей базе данных есть три пользователя, приходят три ссылки на редактирование. Чтобы ограничить их в представлении профиля, я должен изменить фильтрацию при извлечении пользователя в lst.

Если я ставлю request.user.id, то появляется следующая ошибка.

TypeError at /profile/
'int' object is not iterable

Пожалуйста, помогите мне исправить эту ошибку.

Ответ фильтрации:

def profile(request):
    if request.user.is_authenticated:
        lst = User.objects.filter(username=request.user).values('id') #working
        l=[]
        for i in lst:
            i['encrypt_key']=encrypt(i['id'])
            i['id']=i['id']
            l.append(i)
        return render(request, 'profile.html', {'lst':l})
    else:
        messages.error(request, 'Please Provide the credentials to Login to your account.')
        return redirect("login")
Вернуться на верх