在Django模板的此路径中,如何从教师模型的id
中获得“ 12”?
我搜索了一下,我知道如何获取整个URL,但是不知道如何获取它的一部分。
我也尝试使用request.get('id')
,但是没有用!
我的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')
]
我的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)
下面是我要使用的视图,以便从url中获取老师的id并将其从数据库中删除
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)
这是editTeacher.html页面:
<form method='POST'>
{% csrf_token %}
{{ editTeacher.as_p }}
<input type="submit" value="Save">
<a href="../../deleteTeacher/{{ #grab_id }}/">Delete</a>
</form>
答案 0 :(得分:2)
这种逻辑属于视图而不是模板。您可以将my_id
传递到视图中的模板上下文,例如:
def editTeacherView(request, my_id):
context = {
...
my_id: my_id,
}
return render(request, "edit_teacher.html", context}
然后您可以在模板中进行{{ my_id }}
<a href="../../deleteTeacher/{{ my_id }}/">Delete</a>
请注意,对这样的URL进行硬编码是个坏主意。您可以改用{% url %}
标记:
<a href="{% url 'delete-teacher-view' my_id %}>
如果您使用名称空间(例如,app_name ='teachers'`),则需要在标记中包含此名称:
<a href="{% url 'teachers:delete-teacher-view' my_id %}>
类似地,在您的视图中,您可以在重定向时使用URL名称,而不是对URL进行硬编码:
return redirect('list-teacher')