私はDjangoを使って学生 - 教師ポータルを構築しています。
私は、教師と学生という2つのユーザーグループを持っています。ユーザーが先生の場合、私は別のテンプレート(学生の登録番号を選択するためのフォーム)を提供する必要があります。私は同じを行うにはthisリンクをたどった。ここでDjango:テンプレート変数とともにテンプレートに戻る
コードスニペットです:
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 %}
views.py
@login_required(login_url="login/")
def home(request):
is_teacher = request.user.groups.filter(name='teachers').exists()
if is_teacher:
if request.method == 'POST':
form = Regno(request.POST)
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})
else:
form = Regno()
return render(request, 'home.html', {'form': form,'user':request.user,'is_teacher':is_teacher})
else:
selected_reg = Student.objects.filter(regno=request.user)
return render(request, 'home.html', {'user':request.user,'is_teacher':is_teacher,'selected_reg':selected_reg})
教師は生徒のを入力するために、レグノはフォームです登録番号。
先生が最初にログインすると、フォームが表示されます。ただし、フォームを送信した後、フォームは表示されません。テンプレートの{%else%}部分を実行します。教師がフォームを提出した後、is_teacherテンプレート変数がこのテンプレートに渡されるようにするにはどうすればよいですか? Djangoセッションについて読んだことがありますが、それが助けになるかどうかはわかりません。