Python 如何在Django模板中访问部分URL地址(非完整URL)

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

如何从Django模板中获取此路径中教师模型的
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}
。如果你仍然无法让它工作,请用更新的视图和模板更新你的问题,以及你收到的任何错误消息。非常感谢兄弟,上帝保佑你