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

我正在使用Django构建一个学生教师门户。
我有两组用户-教师和学生。如果用户是教师,我需要提供不同的模板(用于选择学生注册号的表单)。我跟随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 %}