Как перенаправить на другую страницу с идентификатором в django - PullRequest
0 голосов
/ 31 марта 2020

У меня есть эта функция в файле view.py, для которой я передаю идентификатор и она отображает определенную страницу

def more_about_child(request,pk):
    child = get_object_or_404(Child_detail,pk=pk)
    academic = Academic.objects.filter(Student_name=child)  
    context={ 
        'child':child, 
        'academic':academic,
    }
    return render(request,'functionality/more/more.html',context)

И этот файл urls.py принадлежит вышеуказанному файлу views.py

from . import views
from django.urls import path

urlpatterns=[
    #more_about_child
    path('more/<int:pk>/',views.more_about_child,name='more'),
]

Тогда у меня есть эта функция, которую я хочу перенаправить на страницу, содержащую идентификатор в вышеуказанном файле urls.py

def add_academy(request,pk):
    child = get_object_or_404(Child_detail, pk=pk)
    academic = Academic.objects.get(Student_name=child)
    form = AcademicForm(request.POST, instance=academic)
    if form.is_valid():
        form.save()
        return redirect('more') #it fails to redirect to this url,because it contain an ID in it
    else:
        form=AcademicForm()
    context = {
        'academic':academic,
        'child':child,
        'form':form,
    }

1 Ответ

1 голос
/ 31 марта 2020

Для того, чтобы сделать перенаправление с аргументами URL, вы можете передать ключевые аргументы в функцию redirect (). В вашем случае вы можете назвать его как:

return redirect('more', pk=pk)

Вот пример документации для такого использования: https://docs.djangoproject.com/en/3.0/topics/http/shortcuts/#examples (пример № 2)

...