Django:与模板变量一起返回模板
我正在使用Django构建一个学生教师门户。Django:与模板变量一起返回模板,django,forms,django-templates,Django,Forms,Django Templates,我正在使用Django构建一个学生教师门户。 我有两组用户-教师和学生。如果用户是教师,我需要提供不同的模板(用于选择学生注册号的表单)。我跟随link做了同样的事情 以下是代码片段: home.html {% if is_teacher %} <p style="color:blue; text-align:center; font-size:160%"><b>Course taken: <span style="co
我有两组用户-教师和学生。如果用户是教师,我需要提供不同的模板(用于选择学生注册号的表单)。我跟随link做了同样的事情 以下是代码片段: home.html
{% if is_teacher %}
<p style="color:blue; text-align:center; font-size:160%"><b>Course taken: <span style="color:green"><a href="course/">IT000</a></span></b></p>
<form action="/" method="post" align="center">
{% csrf_token %}
<div align="center">{{ form }}</div>
<input type="submit" value="Get student's results!" class="btn btn-primary" style="margin-top:10px"/>
</form>
{% else %}
<p style="color:blue; text-align:center; font-size:160%"><b>Performance for the subject <span style="color:green"><a href="course/">IT000</a></span> is shown below.</b></p>
{% endif %}
在这里,Regno是一个供教师输入学生注册号的表格
当教师最初登录时,他将显示表单。但是,在他提交表单后,它不会显示表单。它执行模板的{%else%}部分。如何确保在教师提交表单后将is_teacher template变量传递到此模板?
我读过关于Django会话的内容,但我不确定它是否有帮助。您应该使用
RequestContext
将其与您的请求一起传递,而不是每次都传递给is_老师
看起来在您的post调用表单提交中,您没有传递is\U教师变量。(以下代码)
你应该在上面添加is\u teacher
另外,通过-
在模板中-
{% if request.user|has_group:'teachers' %}
....
{% else %}
....
{% endif %}
您可以避免在每次调用时传递它。希望能有帮助
if form.is_valid():
selected_reg = Student.objects.filter(regno=request.POST.get('regno'))
return render(request, 'home.html',{'selected_reg': selected_reg,'form':form})
register = template.Library()
@register.filter(name='has_group')
def has_group(user, group_name):
group = Group.objects.get(name=group_name)
return True if group in user.groups.all() else False
{% if request.user|has_group:'teachers' %}
....
{% else %}
....
{% endif %}