Как перенаправить на созданную страницу после отправки формы Django

Я пытаюсь перенаправить на созданную страницу после заполнения и отправки формы. Я добился того, что это работает на форме обновления, но не на форме создания. Как мне это сделать?

Вот что у меня есть на данный момент. Дайте мне знать, если вам нужно больше деталей и кода

views.py

@login_required(login_url='login')
def createRoom(request):
    form = RoomForm()
    topics = Topic.objects.all()
    if request.method == 'POST':
        topic_name = request.POST.get('topic')
        topic, created = Topic.objects.get_or_create(name=topic_name)

        Room.objects.create(
            host=request.user,
            topic=topic,
            name=request.POST.get('name'),
            assigned=request.user,
            status=request.POST.get('status'),
            priority=request.POST.get('priority'),
            type=request.POST.get('type'),
            description=request.POST.get('description'),
        )
        return render('room', pk=room.id)

    context = {'form': form, 'topics': topics, 'room': room}
    return render(request, 'room/room_form.html', context)

Но это приводит к ошибке

traceback

Traceback (most recent call last):
  File "C:\Users\mikha\issue_env\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
  File "C:\Users\mikha\issue_env\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\mikha\issue_env\lib\site-packages\django\contrib\auth\decorators.py", line 23, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "C:\Users\mikha\issuetracker\base\views.py", line 68, in createRoom
    return render('room', pk=room.id)

Exception Type: AttributeError at /create-room/
Exception Value: 'function' object has no attribute 'id'

Хотя вы создали новый объект Room, вы не присвоили его room.

Попробовать

room = Room.objects.create(

Ваша функция создания комнаты должна выглядеть следующим образом

@login_required(login_url='login')
def createRoom(request):
    form = RoomForm()
    topics = Topic.objects.all()
    if request.method == 'POST':
        topic_name = request.POST.get('topic')
        topic, created = Topic.objects.get_or_create(name=topic_name)

        room = Room.objects.create(
            host=request.user,
            topic=topic,
            name=request.POST.get('name'),
            assigned=request.user,
            status=request.POST.get('status'),
            priority=request.POST.get('priority'),
            type=request.POST.get('type'),
            description=request.POST.get('description'),
        )
        room.save() 
        return redirect("created-room-view-function")

    context = {'form': form, 'topics': topics, 'room': room}
    return render(request, 'room/room_form.html', context)
Вернуться на верх