群馬県でPythonを使ったAIやシステムを開発しているファントム

Navigation
群馬県でPythonを使ったAIやシステムを開発しているファントム

群馬県でPythonを使ったAIやシステムを開発しているファントムです。企業の経営課題を最適なテクノロジーで解決します。テックブログではPythonを中心にプログラミングに役立つ情報を発信しています。

投稿を検索する


  • 株式会社ファントム コーポレートサイト

カテゴリー



  • AWS 16
  • Django 45
  • FastAPI 4
  • Flask 8
  • GCP 1
  • Information 37
  • Other 32
  • PHP 2
  • Python 93
  • Pythonista 3
  • Rust 1

タグ


Alembic API argparse Beautiful Soup black Channels charset CodeCommit datetime Django REST framework Docker enumerate f-string git GitHub glob Google Colaboratory i18n IAM Internship Jupyter Lambda Matplotlib Nginx OpenCV pandas PIL Pillow PostgreSQL PyCharm PyCon pyenv PyTorch Redis Rembg ReportLab requests S3 Sentry slack tqdm uWSGI venv Vue.js youtube
このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシーと利用規約が適用されます。

© 2022 Fantom, Inc.

Hydra WordPress Theme by EckoThemes.

Published with WordPress.

Related Articles

Filter by Category

  • Python(93)
  • Django(45)
  • Information(37)
  • Other(32)
  • AWS(16)
  • Flask(8)
  • FastAPI(4)
  • Pythonista(3)
  • PHP(2)
  • GCP(1)
  • Rust(1)

Filter by Author

  • EIGHT (14)
  • hayai017 (2)
  • press (196)
Back to Latest Articles
Django

DjangoとChannelsで簡単なチャットサーバーを構築(1)

こちらのチュートリアルと同じ内容です。https://channels.readthedocs.io/en/latest/tutorial/index.html 環境 Python 3.7.0Django 2.2.2ch […]

Posted on 22nd 6月 2019 by press

Python

Beautiful Soupでoptionタグのvalueを取得する

Beautiful Soupで以下のようなHTMLのoptionタグのvalueを取得する方法です。 optionタグのvalueの値を取得する方法 soup = soup.find_all('option')optio […]

Posted on 15th 6月 2019 by press

Django

Dockerを使ってDjangoとPostgreSQL環境を構築する方法

Dockerを使ってシンプルなDjangoとPostgreSQLの開発環境を構築する方法です。GitHubリポジトリをクローンして以下のコマンドを入力します。 1. Dockerイメージを作成 2. Djangoプロジェ […]

Posted on 8th 6月 2019 by press

Django

DjangoでダウンロードするCSVの文字コードを設定

以下のような、attachmentをつけて即ダウンロードが始まるシステムで、文字コードをShift-JISにする為にto_csv()の引数にencodingをShift-JISに設定しても、ダウンロードするとUTF-8で […]

Posted on 6th 6月 2019 by press

Django

That port is already in use.が表示された時の対処法

Djangoでrunserverコマンドを使って開発用サーバーを起動した時にError: That port is already in use.が表示された時の対処法です。 Error: That port is al […]

Posted on 22nd 5月 2019 by press

Python

Pillowを使って画像を合成する

Pillowを使って画像を合成する方法です。GitHubリポジトリ 上の2つの画像を合成して、下の画像を生成します。 Pillowのインストール バージョン確認 ディレクトリ構造 画像をリサイズ base_image = […]

Posted on 22nd 5月 2019 by press

Python

Pillowを使って画像をリサイズする

Pillowを使って画像をリサイズする方法です。GitHubリポジトリ Pillowのインストール バージョン確認 ディレクトリ構造 画像をリサイズ files = glob.glob('./images/*')imag […]

Posted on 22nd 5月 2019 by press

Python

Pillowを使って画像をクロッピングする

Pillowを使って画像をクロッピングする方法です。ソースコードはGitHubにあげています。 Pillowのインストール バージョン確認 ディレクトリ構造 画像をクロッピング files = glob.glob('./ […]

Posted on 21st 5月 2019 by press

Django

Djangoで開発をする際に仮想環境を構築する方法

Djangoで開発をする際にvenvを使って仮想環境を構築する方法です。pyenvがインストールされていてバージョンを切り替えできる状態を前提に進めます。 仮想環境について Pythonで開発していると開発環境では最新の […]

Posted on 20th 5月 2019 by press

Python

PythonistaでiPhoneから株価をスクレイピング

Pythonistaには多くのモジュールがプリインストールされていて、スクレイピングに必要なBeautifulSoupも初めから使える様になっています。そこで、今回はiOSアプリのPythonistaを使ってiPhone […]

Posted on 2nd 5月 2019 by press

Django

pandasで読み込んだCSVの値がNaNだったときの対処方法

DjangoのWEBプリケーションでCSVをpandasで読み込んでforで一行ずつループ処理をしたところ、毎回決まったところで決まったエラーが出たのでPyCharmのデバッグ機能を使って原因を調べた内容です。 プログラ […]

Posted on 28th 4月 2019 by press

Python

Pythonでフォルダ内のファイルを別のフォルダにコピー

Pythonであるフォルダ内のファイルを別のフォルダにコピーする方法です。 ディレクトリ構造(ファイルのコピー後) directory = (os.getcwd())現在のディレクトリを取得します。 image_path […]

Posted on 28th 4月 2019 by press

Python

Pythonでディレクトリ内のファイルを取得する

globモジュールを使いディレクトリ内にあるファイルを取得する方法です。 ディレクトリ構造 まずはディレクトリ内のjpgを全て取得します。 directory = (os.getcwd())で現在のディレクトリのパスを取 […]

Posted on 26th 4月 2019 by press

Django

DjangoでDateTimeFieldが今日のデータを取得する方法

Djangoのモデル上でDateTimeField型のデータが今日の日付のデータを取得する方法です。 1つ目00:00:00から23:59:59までの範囲を条件に取得します。 2つ目今日の日付が含まれるものを条件に取得し […]

Posted on 26th 4月 2019 by press

Python

変換できない文字が混ざった文字列をShift-JISに変換する

テキストファイルやCSVファイルに書き出す時に文字コードをShift-JISに指定して書き出すとエラーになる場合があります。よく見るのが、-や を変換した時に出るエラーで\uff0dや\xa0と表示されます。 […]

Posted on 26th 4月 2019 by press

Django

Djangoでカスタムコマンドを作り実行する

DjangoでWEBアプリケーションを開発していてデータベースの集計などをバッチ処理したいときに、カスタムコマンドを作り実行する方法です。 今回はサンプルとしてmycommandアプリケーションを作成するので以下のコマン […]

Posted on 24th 4月 2019 by press

Django

Djangoで日本語文字列のQuerySetを五十音順でソートする

DjangoのWEBアプリケーションでQuerySetの表示順を五十音順にしたら、開発環境では五十音順で表示されているのに本番環境では五十音順になっていないときの対処法です。(中途半端に五十音順になっていて、4、5件毎に […]

Posted on 22nd 4月 2019 by press

Flask

PythonistaでFlaskからHello World!

iPhoneとiPadから使えるPythonistaというアプリを使ってFlaskからHello World!する方法です。 Pythonistaはプリインストールされたモジュールが充実していて、バージョンも2.7か3. […]

Posted on 10th 4月 2019 by press

Django

Djangoでモジュールを作りviews.pyからimportして呼び出す

Djangoでモジュールを作りviews.pyからimportして呼び出す方法です。 同じ処理を何度も書いたり、同じ処理を複数回呼び出したりするときは、その処理をモジュール化してviews.pyからimportして呼び出 […]

Posted on 9th 4月 2019 by press

Information

2019年ゴールデンウィーク休業のお知らせ

平素は格別のお引立てを賜り、厚く御礼申し上げます。 誠に勝手ながら、弊社では下記日程をゴールデンウィーク休業とさせて頂きます。   2019年4月27日(土)~2019年5月6日(月)   期間中お客 […]

Posted on 8th 4月 2019 by press

View Latest Posts
Django

DjangoとChannelsで簡単なチャットサーバーを構築(1)


press
DjangoとChannelsで簡単なチャットサーバーを構築(1)
Posted on 22nd 6月 2019 by press
2024年度 インターンシップ 募集開始

こちらのチュートリアルと同じ内容です。
https://channels.readthedocs.io/en/latest/tutorial/index.html

環境

Python 3.7.0
Django 2.2.2
channels 2.2.0

プロジェクト作成

$ pip install django channels channels_redis
$ django-admin startproject django_channels

以下のディレクトリが作成されます。

.
├── manage.py
└──  django_channels
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

アプリ作成

python manage.py startapp chat

以下のディレクトリが作成されますが、チュートリアルでは使わないファイルを削除します。

chat
├── __init__.py
├── admin.py
├── apps.py
├── migrations
├── models.py
├── tests.py
└── views.py

不要なファイルを削除した後のディレクトリ構造

chat
├── __init__.py
└── views.py

作成したchatアプリをsetting.pyに記載します。

# django_channels/settings.py
INSTALLED_APPS = [
    'chat',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

ビューを追加

chatフォルダの中にtemplatesフォルダを作成します。作成したtemplatesフォルダの中にchatフォルダを作成し、その中にindex.htmlを作成します。

この様なディレクトリ構造になります。

chat
├── __init__.py
├── templates
│   └── chat
│       └── index.html
└── views.py
<!-- chat/templates/chat/index.html -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Chat Rooms</title>
</head>
<body>
    What chat room would you like to enter?<br/>
    <input id="room-name-input" type="text" size="100"/><br/>
    <input id="room-name-submit" type="button" value="Enter"/>

    <script>
        document.querySelector('#room-name-input').focus();
        document.querySelector('#room-name-input').onkeyup = function(e) {
            if (e.keyCode === 13) {  // enter, return
                document.querySelector('#room-name-submit').click();
            }
        };

        document.querySelector('#room-name-submit').onclick = function(e) {
            var roomName = document.querySelector('#room-name-input').value;
            window.location.pathname = '/chat/' + roomName + '/';
        };
    </script>
</body>
</html>

index.htmlを表示させるためのviewを作成します。

# chat/views.py
from django.shortcuts import render

def index(request):
    return render(request, 'chat/index.html', {})

chatフォルダにurls.pyを追加します。

chat
├── __init__.py
├── __pycache__
├── templates
│   └── chat
│       └── index.html
├── urls.py
└── views.py
# chat/urls.py
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

django_channels内のurls.pyにも追記します。

# django_channels/urls.py
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^chat/', include('chat.urls')),
    url(r'^admin/', admin.site.urls),
]

以下のコマンドを打ってテストサーバーを起動させて、ページが表示されるか確認します。

$ python manage.py runserver
Django version 2.2.2, using settings 'django_channels.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Channelsを有効化

django_channelsフォルダ内にrouting.pyを新規作成します。

# django_channels/routing.py
from channels.routing import ProtocolTypeRouter

application = ProtocolTypeRouter({
    # (http->django views is added by default)
})

settings.pyにも追記します。

# django_channels/settings.py
INSTALLED_APPS = [
    'channels',
    'chat',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

settings.pyの最下部に以下のコードを追記します。

# django_channels/settings.py
# Channels
ASGI_APPLICATION = 'mysite.routing.application'

再度、テストサーバーを起動させます。

$ python manage.py runserver

コマンドラインに以下の様に出力されれば成功です。

Django version 2.2.2, using settings 'django_channels.settings'
Starting ASGI/Channels version 2.2.0 development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
ファントムYouTubeチャンネル

株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    press
    • Channels
    • Share Article:
    • Twitter
    • Facebook
    • Pinterest
    • LinkedIn
    • Reddit
    Show Comments (1)

    Comments

    • DjangoとChannelsで簡単なチャットサーバーを構築(2) – Fantom blog

      […] DjangoとChannelsで簡単なチャットサーバーを構築(1) […]

      • 2019年6月25日
      • Article Author
      • ログインして返信する

    Cancel Reply

    コメントを投稿するにはログインしてください。

    Related Articles

    Django

    Pandasで作ったCSVをダウンロードする

    Django上でPandasで作ったCSVをダウンロードさせる方法です。df.to_csv(“filename.csv”)でも出力は出来ますがダウンロードは出来ないので、ダウンロード機能が必要な場 […]

    Posted on 27th 3月 2019 by press
    Django

    request.FILES.get(‘file’)とrequest.FILES[‘file’] の違い

    request.FILES.get(‘file’)とrequest.FILES[‘file’] の違い この記事は生成AIで作成されました request.FILES.ge […]

    Posted on 21st 5月 2023 by press