問題タブ [django-channels]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2294 参照

python - Django チャネルのコンシューマ

Django でチャットルームを作ろうとしています。Redis サーバーと Django チャネルを使用しています。また、モデル Project と Roomがあります。各プロジェクトには独自のチャット ルームがあります。以下の URL からチャット ルーム ページを開こうとすると、エラーが発生します。私の consumer.py ファイルが正しくないようです。このエラーを修正する方法。助けが必要!

URL :

エラー:

models.py :

views.py :

consumer.py :

0 投票する
3 に答える
3923 参照

python - Django Channels ソケットへのログインが必要ですか?

Django 1.10 で Channels を試し、いくつかのコンシューマーをセットアップしています。

ゲストがこのプライベートソケットに入るのを防ぐために、接続を実行する前に接続を閉じる login_required デコレーターを作成してみました。また、後でユニットテストを統合してテストしましたが、ゲストを入れ続けているため失敗し続けています(どこでもAnonymousUserエラー)。

また、ログインおよびログアウト時にセッションがクリアされず、古いユーザーがログインできる場合があります。

デコレータ:

消費者コードは次のとおりです。

奇妙なことに、 client.send(signal.message)) 転送間のすべてのロジックをコメントアウトすると、正常に機能し、単体テストに合格します (ゲストがブロックされ、認証コードが実行されないことを意味します [したがって AnonymousUser エラー])。何か案は?

ここにもテストがあります:

私はこれに間違って近づいていますか?もしそうなら、どうすればこれを適切に行うことができますか(認証が必要ですか?)

編集: 何かを試すためにアクション システムを統合しました。Django チャネルが HTTP からセッションをまったく取得していないようです。

false を返すだけです。

EDIT2: 動作するようになりました。localhost を 127.0.0.1 に変更してみましたが、動作することがわかりました。localhost を有効なドメインとして検出して、セッションを移植する方法はありますか?

EDIT3: localhost と 127.0.0.1 の Cookie の問題が見つかりました。報奨金を無駄にしないために、メッセージ/チャネルに auth login_required を個人的にどのように実装しますか?

edit4:なぜうまくいかなかったのかはまだわかりませんが、最終的に問題を回避してアプリを変更した方法は次のとおりです。

アクションシステムを作成しました。入力すると、JSON を介して AUTHENTICATE アクションを送信するまで、ソケットは何もしません。ログインしたアクションをguest_actionsとuser_actionsに分けました。認証されると、セッションが設定され、user_actions を使用できるようになります。