Python Django从基于URL的模型列表中获取当前选定的模型

Python Django从基于URL的模型列表中获取当前选定的模型,python,django,django-models,django-templates,Python,Django,Django Models,Django Templates,我正在开发一个Django应用程序,它有几个模型:家长、孩子、学校、手机。每个“家长”(本质上是Django的“用户”模型)可以有多个孩子,每个孩子可以有一所学校和一部手机 我已经构建了我的网站,使其尽可能模块化。我的意思是导航模板在一个文件中,边栏模板(包含许多链接)在另一个文件中,所有这些都由layout.html文件组合在一起 如果家长访问该网站,则会将其重定向到domain.com/dashboard。在导航栏中,家长可以从下拉菜单中选择一个子项。之后,父/用户将被重定向到domain.

我正在开发一个Django应用程序,它有几个模型:家长、孩子、学校、手机。每个“家长”(本质上是Django的“用户”模型)可以有多个孩子,每个孩子可以有一所学校和一部手机

我已经构建了我的网站,使其尽可能模块化。我的意思是导航模板在一个文件中,边栏模板(包含许多链接)在另一个文件中,所有这些都由layout.html文件组合在一起

如果家长访问该网站,则会将其重定向到
domain.com/dashboard
。在导航栏中,家长可以从下拉菜单中选择一个子项。之后,父/用户将被重定向到
domain.com/dashboard/1
,其中“1”是子数据库表的主键

我的问题是:

  • 在页面导航到/dashboard/1之后,如何获取所选值,以便将下拉列表值更改为当前所选的子级
  • 如何在整个layout.html文件中获取有关当前选定子级的信息?例如,边栏链接需要采用
    domain.com/schools/1
    domain.com/cellphones/1
    的形式,其中“1”始终是“children”表的主键。此外,这个“sidebar.html”模板本身存在,并且仅包含在layout.html模板中。目前,我正在正确地链接到
    /dashboard/1
    ,这仅仅是因为我正在使用用户ID遍历子数据库中的所有模型
  • 我已经设法获得了所有模板文件(包括sidebar.html)中所有子项的列表,但是我很难获得基于URL/用户选择的单个模型

    在页面导航到后,如何获取所选值
    /dashboard/1
    ,以便将下拉值更改为 当前选定的子对象

    下面是一种方法,但实际上您需要使用自定义模板标记来呈现下拉列表:

    <select>
       {% for st in studentlist %}
           <option value="{{ st.pk }}"
             {% if request.url.path|slice:":-1" == st.pk %}selected{% endif %}>{{ st }}</option>
       {% endfor %}
    </select>
    
    现在,在模板中的任何地方,如果要引用父级选择的子级,请使用
    {{child}
    ,例如:

    <p>Hello, you are viewing the dashboard for {{ child.first_name }}</p>  
    
    您好,您正在查看{{child.first_name}的仪表板

    在页面导航到后,如何获取所选值
    /dashboard/1
    ,以便将下拉值更改为 当前选定的子对象

    下面是一种方法,但实际上您需要使用自定义模板标记来呈现下拉列表:

    <select>
       {% for st in studentlist %}
           <option value="{{ st.pk }}"
             {% if request.url.path|slice:":-1" == st.pk %}selected{% endif %}>{{ st }}</option>
       {% endfor %}
    </select>
    
    现在,在模板中的任何地方,如果要引用父级选择的子级,请使用
    {{child}
    ,例如:

    <p>Hello, you are viewing the dashboard for {{ child.first_name }}</p>  
    
    您好,您正在查看{{child.first_name}的仪表板


    谢谢您的帮助。我的问题是,这个sidebar.html模板(其中需要有带有child_id的链接)位于dashboard.html模板之外。“dashboard.html”模板只关注实际内容区域的内容。其思想是,当用户打开仪表板时,侧边栏会更新链接。说到这里,我可以从另一个视图调用一个视图,并告诉它在第一个视图渲染后再进行渲染吗?模板不是视图;您需要在
    dashboard.html
    中呈现另一个模板块(来自
    sidebar.html
    ),方法是覆盖它,使其具有上下文,或者使用一个模板标记来获取对象并呈现
    sidebar.html
    中的内容,例如
    {%display\u sidebar child%}
    ,再次感谢。我不可能将
    sidebar.html
    放在
    dashboard.html
    的内部-还有许多其他页面,比如
    dashboard.html
    ,我不想到处都包含
    sidebar.html
    。我一直在努力理解这些自定义包含标记。同样,当模板完全独立时,如何在所有这些不同的页面上获得子模型的单个实例?唯一的共同点是URL。谢谢。我的问题是,这个sidebar.html模板(其中需要有带有child_id的链接)位于dashboard.html模板之外。“dashboard.html”模板只关注实际内容区域的内容。其思想是,当用户打开仪表板时,侧边栏会更新链接。说到这里,我可以从另一个视图调用一个视图,并告诉它在第一个视图渲染后再进行渲染吗?模板不是视图;您需要在
    dashboard.html
    中呈现另一个模板块(来自
    sidebar.html
    ),方法是覆盖它,使其具有上下文,或者使用一个模板标记来获取对象并呈现
    sidebar.html
    中的内容,例如
    {%display\u sidebar child%}
    ,再次感谢。我不可能将
    sidebar.html
    放在
    dashboard.html
    的内部-还有许多其他页面,比如
    dashboard.html
    ,我不想到处都包含
    sidebar.html
    。我一直在努力理解这些自定义包含标记。同样,当模板完全独立时,如何在所有这些不同的页面上获得子模型的单个实例?唯一的共同点是URL。