私は教師が複数の選択肢の質問を学生に送信できるようにするDjangoでWebアプリケーションを構築しています。今のところ、教師が質問をクリックすると、ログインしているすべての生徒を質問ページ(質問フォームを含む)にリダイレクトしたいと思います。しかし、これは私が苦労しているものであるビューから現在のユーザー以外のユーザーをリダイレクトする必要があります。私はリダイレクト(レンダリング、HttpResponseRedirectなど)のすべての形式を調べて、ユーザーパラメータを入力できるかどうかを確認しましたが、これは可能ではないようです。以下は、すべてのユーザーを質問ページにリダイレクトするビューです。私は、Djangoのメッセージを研究しているDjango - 現在のユーザー以外のユーザーのリストをビューからリダイレクト
@login_required
@user_is_on_course
def pushquestion(request, course_code, profquestion_id):
course = Course.objects.get(code=course_code)
choices = Choice.objects.filter(question=profquestion_id)
users = get_current_users(request, course) #gets list of students
for u in users:
#This is where I want to redirect all users to the question page
return render(request, 'thesis/professorquestion.html' {'profquestion':profquestion_id, 'course': course, 'choices':choices})
def get_current_users(request,course):
active_sessions = Session.objects.filter(expire_date__gte=timezone.now())
user_id_list = []
for session in active_sessions:
data = session.get_decoded()
user_id_list.append(data.get('_auth_user_id', None))
return UserProfile.objects.filter(id__in=user_id_list, courseID=course)
は、しかし、これは、すべてのユーザー(警告ボックスのよりとして動作しているように思われる)への質問フォームを送信するために適していないよう備えています。私は長いポーリングやウェブソケットを使って、教授が質問にpingするのを待っている学生アカウントにイベントリスナーを追加しています(おそらく、この行に沿った何か:https://github.com/GetBlimp/django-websocket-request)。しかし、初心者のプログラマーでDjangoの初心者であれば、私が達成しようとしているものが比較的重いように思えるので、私はこれらのアイデアで間違ったツリーを作り上げているのかどうかはわかりません(1つのビューからユーザーリストをリダイレクトします) 。
あなたが求めていることは理にかなっていません。現在ページを要求しているユーザーのみリダイレクトできます。他の人はリダイレクトを要求していません。彼らがそうしたとき、あなたがそれらをリダイレクトすることができます。 –
@DanielRoseman実際には、ログインしているすべてのユーザーをチャンネルに登録し、ブラウザにURLを変更するように指示するコマンドを発行することができるので、websocketsは樹皮をつけるのに適したツリーです。しかし、これは標準的なDjangoの機能ではできません。 ehylandの場合:[Django channels](https://channels.readthedocs.io/en/stable/)の使用を検討してください。しかし、あなたは勉強しなければなりません:)。 – Melvyn
@メルヴィンそれは意味がある、私はチャネルを調べるだろう。ありがとうございました! – ehyland