How do I get '12' which is the id of teacher model in this path from Django template?
I searched a bit and I know how to get the entire url, but don't know how do I get a part of it.
I also tried using request.get('id') but it didn't work!
My urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('addTeacher/', addTeacherView, name='add-teacher'),
path('listTeacher/', listTeacherView, name='list-teacher'),
path('teacherIndex/<int:my_id>/', teacherIndexView, name='teacher-index'),
path('deleteTeacher/<int:my_id>/',
deleteTeacherView, name='delete-teacher-view'),
path('editTeacher/<int:my_id>/', editTeacherView, name='edit-teacher'),
path('', homeView, name='home')
]
My views.py:
def editTeacherView(request, my_id):
my_instance = Teacher.objects.get(id=my_id)
teacher = TeacherForm(request.POST or None, instance=my_instance)
if teacher.is_valid():
teacher.save()
return redirect('../../listTeacher/')
context = {
'editTeacher': teacher
}
return render(request, 'teacher/editTeacher.html/', context)
And this one below is the view I will be using in order to grab the id of the teacher from url and delete it from database
def deleteTeacherView(request, my_id):
try:
teacher = Teacher.objects.get(id=my_id)
if request.method == 'POST':
teacher.delete()
return redirect('../../listTeacher/')
except Teacher.DoesNotExist:
raise Http404
context = {
'teacherId': teacher
}
return render(request, 'teacher/deleteTeacher.html', context)
this is editTeacher.html page:
<form method='POST'>
{% csrf_token %}
{{ editTeacher.as_p }}
<input type="submit" value="Save">
<a href="../../deleteTeacher/{{ #grab_id }}/">Delete</a>
</form>
teacher = Teacher.objects.get(id=my_id)in both views, then useform = TeacherForm(request.POST or None, instance=teacher)in the edit view. For function based views in Django, the usual names would beedit_teacher_viewanddelete_teacher_view.