Я пытаюсь перенаправить на URL PK, уже используя PK внутри представления на основе класса.

В принципе, после редактирования сообщения я хочу перенаправить пользователя в комнату, где находится сообщение. Ближе всего я подошел к этому, когда вручную передал PK комнаты. Насколько я знаю, передача двух PK внутри функции не разрешена в Django. Не могли бы вы помочь мне решить эту проблему, так как я знаю, что мои знания ограничены и не могу найти хороший ответ. (Я использовал <a href="{{request.META.HTTP_REFERER}}">Go Back</a></button> для функциональности возврата назад в шаблоне, но я хочу изменить это, так как из того, что я прочитал, это не лучшая практика). Спасибо за терпение

url.py

urlpatterns = [

path('login/', views.loginPage, name="login"),
path('logout/', views.logoutUser, name="logout"),
path('register/', views.registerPage, name="register"),
path('', views.home, name="home"),
path('room/<str:pk>/', views.room, name="room"),
path('profile/<str:pk>/', views.userProfile, name="user-profile"),
path('create-room/', views.createRoom, name="create-room"),
path('update-room/<str:pk>/', views.updateRoom, name="update-room"),
path('delete-room/<str:pk>/', views.deleteRoom, name="delete-room"),
path('delete-message/<str:pk>/', views.deleteMessage, name="delete-message"),
path('update-message/<str:pk>/', views.updateMessage, name="update-message"),

]

Виды

from django.http.response import HttpResponse
from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.db.models import Q
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.forms import UserCreationForm
from .models import Message, Room, Topic, Message
from .forms import RoomForm, MessageForm



def room(request, pk):
    room = Room.objects.get(id=pk)
    room_messages = room.message_set.all().order_by('created')
    participants = room.participants.all()

    if request.method == 'POST':
        message = Message.objects.create(
            user=request.user,
            room=room,
            body=request.POST.get('body')
        )
        room.participants.add(request.user)
        return redirect('room', pk=room.id)

    context = {'room': room, 'room_messages': room_messages,
               'participants': participants,}
    return render(request, 'base/room.html', context)


@login_required(login_url='login')
def deleteMessage(request, pk):
    message = Message.objects.get(id=pk)
    if request.user != message.user:
        return HttpResponse('Unable to delete message')
    if request.method == 'POST':
        message.delete()
        return redirect('home')
    return render(request, 'base/delete.html',{'obj':message})

@login_required(login_url='login')
def updateMessage(request, pk):
    message = Message.objects.get(id=pk)
    form = MessageForm(instance=message)
    if request.user != message.user:
        return HttpResponse('Unable to edit message')
    if request.method == 'POST':
        form = MessageForm(request.POST, instance=message)
        if form.is_valid():
            form.save()
            return redirect(**After the message is edited I want to redirect to the room where message was originally posted**)
    return render(request, 'base/message_form.html',{'obj':message, 'form': form})

message_form.html

<button class="btn btn--dark" type="submit"><a href="{{request.META.HTTP_REFERER}}">Go Back</a></button>
<button class="btn btn--main" type="submit">Update your message</button>
Вернуться на верх