---
# System prepended metadata

title: 補足資料：PythonでWeb開発を始めてみよう、Django入門（質問可能なもくもくタイム付き）

---

# 補足資料：PythonでWeb開発を始めてみよう、Django入門（質問可能なもくもくタイム付き）

2020/01/23の[勉強会](https://supporterzcolab.com/event/1032/)中の質問への回答のメモ書きを残します

- Webアプリは**ファイルを作る**（Djangoのやり方に沿ってファイルを作る）。ファイルを作るにはエディタが必要
    - [コードエディタ](https://tutorial.djangogirls.org/ja/code_editor/)の章
    - Jupyter NotebookはWebアプリ開発では使いません
- 「Djangoのインストール」でWindowsでは`python`コマンド（Macの場合`python3`）
- もし最新のDjangoを使いたければrequirements.txtを

```
django~=3.0.2
```

としてください

- UbuntuでPythonをインストール
    - システムのPythonを使わない方法をオススメします：https://www.python.jp/install/ubuntu/index.html
- VSCodeのターミナル(WSLのシェル)でvenvを作ろうとするとpipがないと言われる
    - 勉強会中はコマンドプロンプトを案内
    - WSLでは`--without-pip`オプションを付けてvenvを作る方法：https://va2577.github.io/post/79/
        - venvをインストールしたあとでcurlで`get-pip.py`を入手して実行している
    - VSCodeのターミナルの設定をコマンドプロンプトなどWSLでないものに切り替える
        - `terminal.integrated.shell.windows` ref:https://code.visualstudio.com/docs/editor/integrated-terminal

## 質問回答で引用した資料のリンク

- `STATIC_URL`, `STATIC_ROOT`とは
    - `STATIC_URL`がクライアントから静的ファイル（CSSやJS）にアクセスするためのURLに使われる
    - `STATIC_ROOT`が静的ファイルを1箇所に集める場所の設定
        - `BASE_DIR`(=djangogirls)の中に`static`というディレクトリができる設定
        - デプロイした際に有効という認識（手元のPCで動かす上では効いてこない）
    - 詳しくは[Djangoで静的ファイルとうまくやる](https://tell-k.github.io/djangocongressjp2019/#1)
        - [YouTube](https://www.youtube.com/watch?v=A_w9UOR1HZ0)
- FlaskとDjangoの違いは？
    - DjangoはWebアプリに必要な機能が一通り揃っている
    - Flaskは用意されている機能が少ない。最低限のWebアプリ相当のものはDjangpより少ないコードで作れる。機械学習のモデルのAPIで選択されることが多い
    - Flaskはデータベースの扱いやログイン機能など、公開されているアドオンを追加して開発していく
    - ログイン機能に関して、Djangoでは用意されていてセキュリティ対策もされている。Flaskでは、セキュリティを考慮した上で、アドオンを使って自前で用意する必要があると聞いている（分かっていないと使えないという認識）
    - 参考 [Webアプリフレームワーク比較](https://speakerdeck.com/terapyon/python-webhuremuwakubi-jiao)
        - [YouTube](https://www.youtube.com/watch?v=drKDKvnWulc)
- DjangoやFlaskのデータベースアクセスのORMについて。パフォーマンスはどうなのか、クエリを書いてチューニングしたい
    - ORMでクエリが書けないわけではないと認識している
        - 参考 [Make Query Great Again](https://www.slideshare.net/dattun/django-congress-jp-2019-make-query-great-again-slide-share)（クエリを書かざるを得なかったという落ち@126スライド）
            - [YouTube](https://www.youtube.com/watch?v=VQvniZoy8HY)
    - ORMでSQLインジェクションなどSQLまわりのセキュリティが担保される認識なので使っていきたい考え
    - ORMを使ってパフォーマンスが気になる場合は、キャッシュを使うのではないかと思う（が、使った経験がないため確証はない）
- Djangoに備わっているセキュリティについて
    - [現場で使えるDjangoのセキュリティ対策](https://speakerdeck.com/akiyoko/django-security-measures-for-business-djangocon-jp-2019)
    - [YouTube](https://www.youtube.com/watch?v=m0JaT0hGQGg)
- Anacondaで環境構築している方向け（nikkieの発表）[Anaconda環境運用TIPS ](https://gitpitch.com/ftnext/2019_slides/master?p=pyconjp_anaconda_tips)
    - [YouTube](https://www.youtube.com/watch?v=pJ6fz4CLX4s)
