Python Django从基于URL的模型列表中获取当前选定的模型
我正在开发一个Django应用程序,它有几个模型:家长、孩子、学校、手机。每个“家长”(本质上是Django的“用户”模型)可以有多个孩子,每个孩子可以有一所学校和一部手机 我已经构建了我的网站,使其尽可能模块化。我的意思是导航模板在一个文件中,边栏模板(包含许多链接)在另一个文件中,所有这些都由layout.html文件组合在一起 如果家长访问该网站,则会将其重定向到Python Django从基于URL的模型列表中获取当前选定的模型,python,django,django-models,django-templates,Python,Django,Django Models,Django Templates,我正在开发一个Django应用程序,它有几个模型:家长、孩子、学校、手机。每个“家长”(本质上是Django的“用户”模型)可以有多个孩子,每个孩子可以有一所学校和一部手机 我已经构建了我的网站,使其尽可能模块化。我的意思是导航模板在一个文件中,边栏模板(包含许多链接)在另一个文件中,所有这些都由layout.html文件组合在一起 如果家长访问该网站,则会将其重定向到domain.com/dashboard。在导航栏中,家长可以从下拉菜单中选择一个子项。之后,父/用户将被重定向到domain.
domain.com/dashboard
。在导航栏中,家长可以从下拉菜单中选择一个子项。之后,父/用户将被重定向到domain.com/dashboard/1
,其中“1”是子数据库表的主键
我的问题是:
domain.com/schools/1
,domain.com/cellphones/1
的形式,其中“1”始终是“children”表的主键。此外,这个“sidebar.html”模板本身存在,并且仅包含在layout.html模板中。目前,我正在正确地链接到/dashboard/1
,这仅仅是因为我正在使用用户ID遍历子数据库中的所有模型/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。