プログラミング初心者さん向けのDjango

## はじめに
こんにちは、3年生のいーじーです！
カレンダー交換してくれたさかすとさっちーさんには感謝です💕
みなさんも体は大事にしてください:disappointed_relieved:

流れとしては
①フレームワークとは？
②一般的なウェブサーバとDjango
③メリット・デメリット・できること
④Djangoのファイルの説明
⑤「hello world」を提示させる
で行きたいと思います！
## ①フレームワークとは？
まず、DjangoはPythonのウェブアプリケーションフレームワークです
フレームワークは使うと効率的にアプリケーションができるもの
最悪、あってもなくても同じものが作れます。イメージは下の写真
![フレームワーク.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982093/2a4d02b9-76d7-da7f-b758-edd208701720.png)

## ②一般的なウェブサーバとDjango
一般的なウェブサーバ：URLと対象のファイルが1:1の関係
![スクリーンショット 2022-12-16 205350.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982093/6c9e8974-7670-7a72-fa45-59a752f7dab3.png)
Django：上記と異なり複雑な処理を行う
![スクリーンショット 2022-12-16 205452.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982093/232ebddf-2a72-a5c3-4c66-9c2513528843.png)

これだと少し分かりづらい人もいると思うので、
一般的なウェブサーバ→ドーナツ屋さん
Djangoを使用した仕組み→ラーメン屋さん
に例えてみましょう。

一般的なウェブサーバ：
ドーナツ1つ頼むとそのままドーナツが1つもらえる＝商品と注文が1:1
![スクリーンショット 2022-12-16 205639.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982093/d908009c-e255-8c50-b49c-7376731b533f.png)
Django：
ラーメンの味や大きさ、どんなトッピングが必要か様々な種類がある。
＝複雑な処理を行っている
![スクリーンショット 2022-12-16 205733.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982093/54497b2b-55ff-2ad6-6522-d06e7c0e7330.png)
実際にYouTubeの例でみると
![スクリーンショット 2022-12-16 210335.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982093/cfef2b30-6f38-a8ff-f67c-3decc3573bb0.png)
## ③メリット・デメリット・できること
__メリット__
・ネットに情報が多いので学びやすい
・素早いプロトタイプ開発が可能
＊実はDjangoは「締め切りの味方である完全主義者」がモチーフらしい
・簡単に共有ができる
・MTVモデルでアプリ開発が可能

__デメリット__
・処理速度が遅め
・全ての機能を把握するまで時間がかかる
・セキュリティ面への配慮が難しい
＊セキュリティに知識がある人なら大丈夫
・Modelへのマッピングに注意

__できること__
・管理画面が作れる
・ユーザ認証ができるなどたくさん！！
## ④Djangoのファイルの説明
Djangoは環境を整えると勝手にファイルが作られています！
写真の低とかは重要度のことです
![スクリーンショット 2022-12-16 210646.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982093/83bfbac9-0e34-c318-f22e-55a17bab9374.png)
__あんまり重要じゃないファイル__
・＿init＿.py
→ほかのファイルからクラスや関数を呼び出すことができる
・wsgi.py
→WSGIという仕様にのっとってウェブサーバとDjango間を取り持つ役割
＝ウェブサイトを公開する際の選択肢を増やせる
＊ファイルを細かく編集する必要がない
・asgi.py
→多くのリクエストの記録を取って、同時に多くの処理ができるようにしている
難易度は高めでDjango3から新しく導入された

__重要なファイル__
・manage.py
→Djangoに備わっている便利な機能を使う
・setting.py
→プロジェクト全体の設定を行う
・urls.py
→ブラウザから受け取ったrequestをもとに、次のview.pyに対して指示を出す
## ⑤「hello world」を提示させる
①立ち上げ
コマンドプロンプトやターミナル等に下のを打つ
ファイル名はなんでもおっけいです〇
```
mkdir project1
cd project1
python3 -m venv venv
source venv/bin/activate
pip install Django==3.2
django-admin startproject helloworldproject 
```
②urls.pyの編集
```urls.py
from django.contrib import admin
from django.urls import path
from.views import helloworldfunc

urlpatterns = [
    path('admin/', admin.site.urls)
    path('helloworldurl/', helloworldfunc)
]
```
③views.pyの作成＋編集
views.pyはurls.pyと同じディレクトリに作成しましょう！
```views.py
from django.http import HttpResponse

def helloworldfunc(request):
    return HttpResponse('hello world')
```
④実際に開いてみる
コマンドプロンプトやターミナル等に下のを打つ
注意：manage.pyがあるディレクトリで行う
```
python3 manage.py migrate
python3 manage.py runserver
```
実際に下のURLにログインすると
http://127.0.0.1:8000/helloworldurl/
![スクリーンショット 2022-12-17 160723.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982093/0687aeb3-c3d9-126c-5910-d7d47a20c418.png)
成功です！

## 参考文献
>1.カクレノ>HOME>書類・ファイル>文書
https://kotonohaworks.com/free-icons/bunsho/
>2.素材Library.com
https://www.sozai-library.com/sozai/554
>3.いらすとや
https://www.irasutoya.com/
>4.大橋亮太・吉田薫(2022) Djangoのツボとコツがゼッタイにわかる本[第2版]
>5.Djangoの機能でできること5つ　メリット・デメリット4つとは？
https://www.acrovision.jp/career/?p=2962
>6.Icon-pit　https://icon-pit.com
>7.ITCブログ【発見！】Djangoで作られたサイト有名どころ10選
https://itc.tokyo/django/10-websites-made-with-django/
>8. ポテパン　Django案件のイマがわかる！知って見つかる最適案件
https://freelance.potepan.com/blogs/4425#chapter_8

＊今回のプログラム文は
4.大橋亮太・吉田薫(2022) Djangoのツボとコツがゼッタイにわかる本[第2版]
から引用しています。