Djangoの概要を掴む

:::note
このブログの作者はフロントエンドにweightをかけ過ぎている者です（他の記事見ると察して頂けるかと）😇
温かい目で見守って頂けると助かります
:::

# 1. 背景
業務でDjangoを使っているもののさっぱりな為なんとかしたいと思った為です。
ということで軽く概要から入ります。

# 2. Djangoとは

https://www.djangoproject.com/start/overview/

Pythonのフレームワークです
## 歴史
当初、2003 年から 2005 年の間に、新聞のウェブサイトの作成とメンテナンスを担当するウェブチームによって開発されたそうです。
いくつかのサイトを作成した後、チームは多くの共通コードとデザインパターンを除外、再利用するようになりました。
この共通コードは、"Django" プロジェクトとして 2005 年 7 月にオープンソース化され、汎用のウェブ開発フレームワークに発展しました。


## Djangoの由来
ジプシー・スウィングのギタリストでのジャンゴ・ラインハルト (Django Reinhardt) からとったものだそうです
[Djangoの概要](https://homata.gitbook.io/geodjango/django/django)

## Ridiculously fast
Djangoは素早く立ち上げることができるそうです
[Getting started with Django](https://www.djangoproject.com/start/)

# 3. Djangoの特徴
## Fully loaded

一般的な Web開発タスクを処理するために使える数十の追加機能が含まれているそうです。
### ORM
ORM(object-relational mapper)とは
- 名前の通り、「オブジェクト」と「関係データベース」をマッピングしてくれる
- 非オブジェクト指向言語であるSQLを意識しながらオブジェクト指向プログラムを書くことができる
- RDBMSによるSQL文法の違いを吸収できる

### テンプレートエンジン

テンプレートエンジンとは
テンプレートとなる部分とデータモデルで表現される入力データを合成し、成果ドキュメントを出力します

[Django templates](https://docs.djangoproject.com/en/5.0/topics/templates/)
- Django テンプレート言語 (DTL) と呼ばれる独自のテンプレートシステム
- Jinja2 用のバックエンドをビルトインで同梱
- 他のテンプレート言語用のバックエンドも[カスタムテンプレートバックエンド](https://docs.djangoproject.com/en/5.0/howto/custom-template-backend/)で使用できる

### 他にも以下の機能があるそうです
- ユーザ認証
    [User authentication in Django](https://docs.djangoproject.com/en/5.0/topics/auth/)
- コンテンツ管理
    [The Django admin site](https://docs.djangoproject.com/en/5.0/ref/contrib/admin/)
- サイトマップ
    [The sitemap framework](https://docs.djangoproject.com/en/5.0/ref/contrib/sitemaps/)
    - サイトマップとは
        検索エンジンのインデクサーに、ページの変更頻度やあるページがサイト内の他のページと比較してどの程度「重要」であるかを伝える、ウェブサイト上のXMLファイルのことです
- RSSフィード
    [The syndication feed framework](https://docs.djangoproject.com/en/5.0/ref/contrib/syndication/)
    - RSS（Really Simple Syndication）とは
    サイトの更新情報を公開するために設計されたいくつかのXML文書フォーマット
    [RSS](https://developer.mozilla.org/en-US/docs/Glossary/RSS)

## Reassuringly secure
- よくあるセキュリティミスを回避できるように開発者を支援
    セキュリティミスの例
    - SQLインジェクション
    - クロスサイトスクリプティング
    - クロスサイトリクエストフォージェリ
    - クリックジャッキング
- ユーザ認証システムは、ユーザアカウントとパスワードを安全に管理する方法を提供
[Security in Django](https://docs.djangoproject.com/en/5.0/topics/security/)

## Exceedingly scalable
迅速かつ柔軟なスケール能力を使って、最も激しいトラフィック需要に対応
[Does Django scale?](https://docs.djangoproject.com/en/5.0/faq/general/#does-django-scale)

## Incredibly versatile
組織、用途問わず、あらゆるものを構築するためにDjangoは使われてきたそうです

なんとInstagram,Spotify,Youtubeで使われているそうです

# 4. Document
- https://www.djangoproject.com/start/overview/
    公式Documentです
- https://www.django-rest-framework.org/
    DRF(django-rest-framework)とはRESTfulAPI開発に特化したDjangoのフレームワークだそうです
    それのDocumentです
- https://developer.mozilla.org/ja/docs/Learn/Server-side/Django
    MDNはフロントエンドの開発でしか使ったことないですが、結構わかりやすく書かれていたので見てみようと思います
- https://djangopackages.org/
    Django向けのさまざまなパッケージやアプリケーションのリストを提供しているサイトです

他にサイトありましたら教えてください

# 5. 参考
- [GeoDjangoではじめる地理空間情報](https://homata.gitbook.io/geodjango)
- [Django REST Framework とは？（Python アプリケーション）](https://qiita.com/pythonista/items/1babe212609aa159af77)
- [djangoproject](https://www.djangoproject.com/start/overview/)
- [Djangoで作られたサイト](https://builtwithdjango.com/projects/)
- [RSS](https://developer.mozilla.org/en-US/docs/Glossary/RSS)
- [テンプレートエンジンを理解する！初心者でも分かる構成、メリットなどの基礎知識から総勢12種類のご紹介まで！](https://anken-hyouban.com/blog/2021/06/01/template-engine/)
- [ORMのメリットやユースケース](https://envader.plus/article/129)
- [MDN Django の紹介](https://developer.mozilla.org/ja/docs/Learn/Server-side/Django/Introduction#%E3%81%A9%E3%81%93%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F%E3%81%AE%EF%BC%9F)
- [10 Popular Django Websites That You Probably Know](https://djangostars.com/blog/10-popular-sites-made-on-django/)

# 6. 最後に
- フロントエンドに尖りすぎていたので、一般レベルまでバックエンドのスキルもつけていきたいです！
- 次は「直接DBのtableを削除した際にmodelと同期が取れなくなった話」を記事に書きます