Python 如何在Django模板中访问部分URL地址(非完整URL)
如何从Django模板中获取此路径中教师模型的Python 如何在Django模板中访问部分URL地址(非完整URL),python,django,Python,Django,如何从Django模板中获取此路径中教师模型的id“12” 我搜索了一下,我知道如何获取整个url,但不知道如何获取其中的一部分 我还尝试了使用request.get('id'),但没有成功 My URL.py: urlpatterns = [ path('admin/', admin.site.urls), path('addTeacher/', addTeacherView, name='add-teacher'), path('listTeacher/', lis
id
“12”
我搜索了一下,我知道如何获取整个url,但不知道如何获取其中的一部分
我还尝试了使用request.get('id')
,但没有成功
My URL.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')
]
下面这一个是我将使用的视图,以便从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>
{%csrf_令牌%}
{{editTeacher.as_p}}
这种逻辑属于视图,而不是模板。您可以将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>
如果使用名称空间(例如app_name='teachers'),则需要在标记中包含以下内容:
<a href="{% url 'teachers:delete-teacher-view' my_id %}>
这种逻辑属于视图,而不是模板。您可以将
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>
如果使用名称空间(例如app_name='teachers'),则需要在标记中包含以下内容:
<a href="{% url 'teachers:delete-teacher-view' my_id %}>
这需要正确定义路径。向我们显示您的URL.py和视图。有几个提示:如果在两个视图中都使用
teacher=teacher.objects.get(id=my_id)
,然后在编辑视图中使用form=TeacherForm(request.POST或None,instance=teacher)
,您的代码会更清晰。对于Django中基于函数的视图,通常的名称是edit\u teacher\u view
和delete\u teacher\u view
。这是正确定义路径所附带的。向我们显示您的URL.py和视图。有几个提示:如果在两个视图中都使用teacher=teacher.objects.get(id=my_id)
,然后在编辑视图中使用form=TeacherForm(request.POST或None,instance=teacher)
,您的代码会更清晰。对于Django中基于函数的视图,通常的名称是edit\u teacher\u view
和delete\u teacher\u view
。感谢您抽出时间回答。我读了你的评论并回答了这两个问题。我有点困惑怎么做。我试了一下,结果出了一个错误,可能是因为我没有得到解释,是我的错。如果你不介意,请你编辑我的代码,这样我就能理解你的方法了。我想获取id并删除那个老师!在最新的更新中,您已经使用了{{{{{{{{{抓取id}}
——我已经向您展示了在editTeacherView
中将我的id
添加到上下文
词典后,您应该使用{my{u id}
。如果你仍然无法让它工作,请用更新的视图和模板更新你的问题,以及你收到的任何错误消息。非常感谢你,兄弟,上帝保佑你,我感谢你花时间回答。我读了你的评论并回答了这两个问题。我有点困惑怎么做。我试了一下,结果出了一个错误,可能是因为我没有得到解释,是我的错。如果你不介意,请你编辑我的代码,这样我就能理解你的方法了。我想获取id并删除那个老师!在最新的更新中,您已经使用了{{{{{{{{{抓取id}}
——我已经向您展示了在editTeacherView
中将我的id
添加到上下文
词典后,您应该使用{my{u id}
。如果你仍然无法让它工作,请用更新的视图和模板更新你的问题,以及你收到的任何错误消息。非常感谢兄弟,上帝保佑你