【发布时间】:2011-09-26 04:43:50
【问题描述】:
我的 site_base.html 中有一个表单,它扩展到我的所有模板。
在我的 site_base.html 中,有一个允许用户更改其角色的下拉表单。根据所选角色,模板会发生变化。
我曾考虑通过context processor 保留此信息,但我在编写将保留表单值的正确逻辑时遇到问题。
所以基本上当用户选择了他的角色时,我会使用 role_id 来填充我的网址,但我不能这样做,因为每当我点击一个新链接时,我都会得到一个 null 值,这要归功于我context_processor 中的逻辑。
我对 Python 和 Django 有点陌生,我不确定我应该如何去做?
Github 的帐户上下文切换器是一个很好的用例。
site_base.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>
naive context.processor.py
3 def context_switcher(request):
4 """
5 Get a user's role
6 """
7 if 'role' in request.POST:
8 role_id = request.POST.get('role')
9 current_role = Role.objects.filter(id=role_id)[0]
10 else:
11 current_role = ''
12 return {'current_role': current_role}
【问题讨论】:
标签: python django django-forms