简体   繁体   English

提交表单 Django 后如何重定向到创建的页面

[英]How do I redirect to the created page after I submitted the form Django

I'm trying to redirect to the created page after I've filled out and submitted a form.填写并提交表格后,我试图重定向到创建的页面。 I have gotten it to work on the update form but not the create form.我已经让它在更新表单上工作,而不是在创建表单上工作。 How do i do this?我该怎么做呢?

Here's what I have so far.这是我到目前为止所拥有的。 Let me know if you need more details and code如果您需要更多详细信息和代码,请告诉我

views.py视图.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)

But this throws this error但这会引发此错误

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'

While you have created a new Room object, you haven't assigned it to room .当您创建了一个新Room object 时,您还没有将它分配给room

Try尝试

room = Room.objects.create(

Your create room function should look like this您创建的房间 function 应该如下所示

@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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM