Django上下文处理器和表单变量

2024-04-25 22:05:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表格在我的网站_基本.html扩展到我所有的模板。在

在我的网站上_基本.html,有一个下拉表单,允许用户更改其角色。根据所选角色,模板将更改。在

我曾想过通过context processor来持久化这些信息,但是我在编写正确的逻辑来持久化表单值时遇到了问题。在

所以基本上,当一个用户选择了他的角色时,我会使用role_id来填充我的url,但是我不能这样做,因为每当我点击一个新链接时,我都会得到一个null值,这要归功于context_processor中的逻辑。在

我对Python和Django有点陌生,我不知道该怎么做?在

Github的账户上下文切换器是一个很好的用例。在

现场表格_基本.html

123             <form name="context" method="post" action="">{% csrf_token %}
124                 <div class="input_group">
125                     <select name="role" onchange="contextform();">
126                         <option value="none">Select Context</option>
127                         {% for role in request.user.get_or_create_profile.roles.all %}
128                         <option value="{{ role.id }}" {% ifequal role.id current_role.id %}selected="selected"{% endifequal %}>{{ role.name }} for {{ role.event }}</option>
129                         {% endfor %}
130                     </select>
131                 </div>
132                 {{ current_role }}
133             </form>

天真context.processor.py

^{pr2}$

Tags: 用户nameform模板id角色表单网站
1条回答
网友
1楼 · 发布于 2024-04-25 22:05:28

第一次设置后,立即将值存储在会话中(在视图中,而不是上下文处理器中)。在

request.session['role_id'] = request.POST['role']

然后,每次都可以在上下文处理器中获取实际角色对象:

^{pr2}$

相关问题 更多 >