Добрый день, ТАК, я новичок в Django, и у меня есть быстрый вопрос с отправкой формы и перенаправлением. Я следую руководству и на данный момент использую представления на основе функций.
Основная проблема, с которой я столкнулся сейчас, заключается в том, что после отправки формы URL-адрес меняется с http://127.0.0.1:8000/проекты/1/ на http://127.0.0.1:8000/projects/1/updateReport.
Как я могу сделать так, чтобы мой URL-адрес после отправки формы возвращался к http://127.0.0.1:8000/проекты/1/ (без /updateReport/). Большое спасибо за Вашу помощь!
Вот мои URL:
url(r'^(?P<project_id>[0-9]+)/$', views.projectView, name='projectView'),
url(r'^(?P<project_id>[0-9]+)/updateReport/$', views.updateReport, name='updateReport')
Вот мои взгляды:
def projectView(request, project_id):
project = get_object_or_404(Project, id=project_id)
reportSet = project.report_set.all()
context = {
'project': project,
'reports': reportSet
}
return render(request,'projectMgmt/projectView.html',context)
def updateReport(request, project_id):
project = get_object_or_404(Project, id=project_id)
sys_msg = "Report Updated!"
#Increment Report Version
reportSet = project.report_set.all()
if reportSet.last():
version = reportSet.last().reportVersion + 1
else:
version = 1 #New Report for project
#New Report Text (name = "reportText" from textarea in page)
newText=request.POST['reportText']
try:
newReport = Report(project=project, reportVersion=version, reportText=newText)
newReport.save()
except:
sys_msg = "Error!"
context = {
'project': project,
'reports': reportSet,
'sys_msg': sys_msg
}
return render(request, 'projectMgmt/projectView.html',context)





Измените эту строку, чтобы она была перенаправлением на представление URL, которое вы хотите отобразить: см. Документы.
return render(request, 'projectMgmt/projectView.html',context)
К этому
return redirect('projectView', project_id=1)
from django.shortcuts import redirect
- By passing the name of a view and optionally some positional or keyword arguments; the URL will be reverse resolved using the reverse() method:
def updateReport(request, project_id):
...
return redirect('projectView', project_id=1)
2 . By passing a hardcoded URL to redirect to:
def updateReport(request, project_id):
...
return redirect('/proects/'+ project_id + '/')