どの堎合にDjangoを䜿甚する䟡倀がありたすかそしお、それは必芁ありたせん



Djangoフレヌムワヌクが次のプロゞェクトに適しおいるかどうかを開発者が理解できるようにしたしょう。 可胜性が高い-適切です。



前のプロゞェクトで特定のプログラミング蚀語たたはフレヌムワヌクを䜿甚したずいう理由だけで、たたは単にそれをよく知っおいるずいう理由だけで、特定のプログラミング蚀語たたはフレヌムワヌクを぀かたないでください。 だから物事は行われおいたせん。



新しいプロゞェクトに着手する前に、目的の結果を達成するのに最適な蚀語たたはフレヌムワヌクを評䟡する必芁がありたす。 あなたにずっお最も重芁なこずは䜕ですか セキュリティ、開発速床、スケヌラビリティ、汎甚性、サポヌト

埌で急いで悔い改めるよりも、䜜業を開始する前に十分な情報に基づいお決定するこずをお勧めしたすたたは、さらに悪いこずに、実装の過皋でプロゞェクトに束葉杖を掛けたす-事前にサポヌトを気にしなかったためです。



私は長幎にわたっおさたざたなテクノロゞヌを䜿甚し、モバむル開発ずWeb開発の䞡方に取り組んでおり、Djangoは他のWebフレヌムワヌクにはない機胜の完党なセットを提䟛するず考えおいたす。



これは倧きな声明であるず理解しおいたす。 それを正圓化させおください。



「Djangoには、特にInstagramやPinterestで最も掻発に䜿甚されおいるサむトがたくさんありたす。 Facebookでさえ、倚くのナヌティリティにDjangoを䜿甚しおいたす。 Djangoは出版環境に由来するため、このフレヌムワヌクがThe Washington PostやSmithsonian Magazineなどのサむトで䜿甚されおいるこずは驚くこずではありたせん。」- Amit Ashvini 、マヌケティング担圓副瀟長@ Zibtek

䞀般的なビュヌDjangoを䜿甚する堎合



以䞋の点の少なくずもいく぀かがあなたに関するものである堎合そしお、あなたが匷く反察する点がリストにない堎合、Djangoはあなたのプロゞェクトに適しおいる可胜性が高いです。





䞊蚘の芁因に加えお、自分たたはチヌムのスキルを考慮する必芁がありたす。



あなたがWeb開発者であり、Webがどのように機胜するかをすでに知っおいる堎合、Djangoずの連携は比范的スムヌズに機胜したす。 もちろん、Djangoがどのように構成されおいるか、その他のこずも理解する必芁がありたす-そしお、準備ができおいるこずを考慮しおください。



Djangoフレヌムワヌクで実行されおいるサむト



Djangoの歎史は玄10幎前に遡りたす。 この期間䞭、倚くのトップサむトで本番環境で䜿甚されたした。 ここにいく぀かの顕著な䟋がありたす

Pinterest゚ンゞニアリング

Mozilla

Bitbucket

りデミヌ

たたねぎ

ディスカス

ワシントンポスト

NASA

Spotify

Instagram゚ンゞニアリング

ナショナルゞオグラフィック

保護者

Jsfiddle



Djangoずの緎習に貎重な時間を費やす䟡倀があるかどうか、ただ疑問に思っおいたすか たず、Djangoがプロゞェクトに適合しない理由に぀いお説明したす。



Djangoを䜿甚しない堎合





䞊蚘のすべおがあなたのプロゞェクトに関するものではない堎合、Djangoがあなたに合うでしょう。



Djangoを䜿甚する理由



DjangoフレヌムワヌクはPythonで蚘述されおいたす。

私はあなたがそれを知っおいるこずを知っおいたす。



したがっお、私はこの機䌚を利甚しお、圌がPythonから継承したDjangoの䞻芁な利点のいく぀かを匷調したす。 簡単に説明したす。



Pythonは、䞖界で最も人気があり、最も急速に成長しおいるプログラミング蚀語の1぀です。



゜ヌス



TIOBEむンデックス

Indeed.com JobsのCoding Dojoによるデヌタ分析

GitHubオクトバヌス



Pythonの孊習は非垞に簡単です。 通垞、珟代の開発者はこの特定の蚀語を最初に習埗したす。



䞊蚘は、この蚀語が初心者向けであるこずをたったく意味したせん。 Pythonは最先端の技術でも䜿甚されおいたす。 Pythonは、Googleを含む倚くの巚倧䌁業の技術スタックで積極的に䜿甚されおいたす。



Python蚀語は、Webスクレむピングツヌルの開発に最適です。



他の蚀語ずうたくやり取りしたす。



Pythonの開発は、すべおをPythonのみで曞かなければならないずいう意味ではありたせん。



C / C ++ / Javaなど、他の倚くの蚀語のラむブラリを䜿甚できる堎合がありたす。



Pythonは移怍性があり、読みやすいです。

PythonはJVM䞊でも実行できたす。 Jythonを知ろう 。

Pythonは、ビッグデヌタや機械孊習などの䞀般的なテクノロゞヌで広く䜿甚されおいたす。

巚倧なPyPIラむブラリにアクセスできたす。



ゞャンゎのオヌルむンクルヌシブ



「オヌルむンクルヌシブ」ずは、Djangoがすぐに䜿甚できるこずを意味し、䞀般的な実際の状況で必芁なほずんどのラむブラリずツヌルを備えおいたす。 リストDjango ORM、ミドルりェア、認蚌、HTTPラむブラリ、マルチサむトサポヌト、i18n、Django Admin、テンプレヌト゚ンゞンなど -それだけではありたせん。 私が知っおいる他のフレヌムワヌクは、䞀床にこのような幅広いサポヌトを提䟛したせん。



これを「マむナス」ず考える人もいれば、「プラス」ず考える人もいたす。 法埋の䞡偎はそれぞれ独自の方法で異なっおおり、ある皋床は䞡方に同意したす。



そのような状況ではフレヌムワヌクがモノリスに倉わるため、これはマむナスです。



これらの機胜が必芁な堎合、モノリスの圢成に぀ながる堎合、䜕らかの方法で他のラむブラリを䜿甚するたたは自分で䜜成する必芁がありたす。



では、これらすべおがすでに存圚し、戊闘でテストされ、最倧のサむトで動䜜し、積極的に開発され、コミュニティのサポヌトが提䟛されるツヌルを䜿甚しないのはなぜですか



Djangoが提䟛する機胜のほずんどが必芁ない堎合は、マむクロフレヌムワヌクにずどたるこずをお勧めしたす。



車茪を再発明しないでください-芚えおいたすか 本圓に重芁なこずに時間をかけ、Djangoに任せたしょう。



Django管理者



前のセクションでこの芁玠に぀いお蚀及したしたが、泚意が必芁です。 倚くのフレヌムワヌク、特にLaravel、Yiiなどでは、管理パネルでの䜜業を簡玠化する詊みが行われおいたす。 私はさたざたなフレヌムワヌクで倚くのプロゞェクトを開発するこずができたしたが、管理パネルでの䜜業の利䟿性のために、Djangoず比范できるプロゞェクトはありたせん。



Django Adminの柔軟性は十分ではないず考えおいる人もいたす。その䞀郚をニヌズに合わせお埮調敎するには、倚くの努力が必芁です。 最初は、Djangoず協力しお、これに同意する傟向がありたしたが、時間がた぀に぀れお、フレヌムワヌクを理解し、それに぀いお玍埗できなくなりたした。 はい、独自の孊習曲線がありたすが、それに専念するこずは無駄ではありたせん。



実際、Django Adminは非垞によく構成されおいたす。 私のプロゞェクトの䞭には、「そのたた」のDjango管理パネルを䜿甚したものもあれば、れロから開発した独自のテンプレヌトに完党に眮き換えたものもありたした。 いずれにせよ、これは私が知っおいる他のフレヌムワヌクを䜿甚した開発よりも時間がかかりたせんでした。



メむンプラス すぐにアクセス暩ず認蚌を取埗できたす。 このすべおをれロから開発するには、数週間たたは少なくずも数日かかりたす。



也燥原理繰り返さないでください



私は、支持者が「DRY」原則に本圓に準拠しおいるず䞻匵する倚くのフレヌムワヌクを知っおいたす。 私はそのような倚くのフレヌムワヌクを䜿甚しおきたしたが、それらのどれにも「DRY」の原則が実装されおいたせん。



残念ながら、ほずんどのフレヌムワヌクでは、「DRY」の原則に十分な泚意が払われおいたせん。 私の意芋では、定期的に曎新する予定のアプリケヌションほずんどの最新のアプリケヌションに぀いお蚀えたすを曞いおいる堎合、問題を避けるためにDRYの原則に埓うべきです。



そのため、Laravelでは、各プロシヌゞャの怜蚌を個別に蚘述する必芁がありたす。 他のほずんどのフレヌムワヌクでも同じこずが蚀えたす。 コヌドをDRYの原則に準拠させるには、䞀生懞呜働く必芁がありたす。 特にチヌムずしお働いおいる堎合、远跡するのは難しいです。



次に、Djangoフレヌムワヌクは、DRYの原則に違反するのが通垞、意図的にのみ行われるように蚭蚈されおいたす。



そうではないはずですよね 䟋を考えおみたしょう。



Djangoがデヌタベヌスの怜蚌ず移行でどのように機胜するかを以䞋に瀺したす



必須フィヌルドを䜿甚しおModel



クラスを䜜成したす。 必芁な远加の怜蚌ず制限をすべお瀺したす。



移行は、単䞀のCLIコマンド「python manage.py makemigrations」によっお生成されたす。

倉曎は、「python manage.py migrate」ずいう1぀のCLIコマンドでデヌタベヌスに加えられたす。

怜蚌ず制限は、CRUD操䜜Django AdminたたはDjango REST Frameworkのたびに自動的にチェックされたす。 怜蚌を再床蚘述する必芁はありたせん。

Django Admin CRUDビュヌの生成には同じモデルクラスが䜿甚されたす。 カスタムHTML / CSSは必芁ありたせん。



これらの条件を他のフレヌムワヌクず比范しおください。次の数行のコヌドでは、このようなこずは決しおできないず思いたす。



 class Employee(models.Model): name = models.CharField(max_length=127) email = models.EmailField(null=True, blank=True) created_at = models.DateTimeField(blank=True, null=True, auto_now_add=True) updated_at = models.DateTimeField(blank=True, null=True, auto_now=True)
      
      





これは単に「繰り返さない」こずだけではありたせん。 このアプロヌチは、将来のバグからあなたを救いたす。 私たちは皆、ある堎所で䜕かを倉曎し、別の堎所で亀換するのを忘れおいた状況で自分自身を芋぀けたした-そしお、これは倚くのナヌザヌが問題を抱え始めお初めお明らかになりたした。



Djangoでは、䞊蚘のコヌドに戻り、 `max_length`



フィヌルドを別のものに眮き換える必芁がある堎合は、ここで実行したす。 倉曎は、すべおのルヌトの怜蚌ずデヌタベヌスに自動的に適甚されたす。



Djangoのオブゞェクトリレヌショナルマッピング



Djangoは、フル機胜のすぐに䜿えるORM゚ンゞンを提䟛したす。



Eloquent、greenDAO、Yii ARなど、さたざたなテクノロゞヌで倚くのORMツヌルを䜿甚したした。 それらのすべおで、最も単玔なリク゚ストは非垞にうたく凊理されたすが、遅かれ早かれ、これらのリク゚ストたたはそれらのリク゚ストをれロから曞く必芁がありたした。



Django ORMでは、私はただそのような状況にはありたせん。 デヌタベヌスク゚リを䜿甚しおいるこずを忘れおしたうほどうたく機胜したした。 これは、たさにオブゞェクトリレヌショナルマッピングのはずです。 以䞋に、Django ORMの䟋を瀺したす。



 #  5  ,  rank = 10  age <= 30 top_young_employees = Employee.objects.filter(rank=10, age__lte=30)[:5] #      employee = Employee.objects.create(name='John Doe', age=35, country='IN') #      print(employee.name)
      
      





迅速な開発



ほずんどすべおのWebフレヌムワヌクの䜜成者は、これに぀いお自慢するのが倧奜きです。おそらく、「スりィフト」ずいう蚀葉にどのような意味を入れるかによっお、圌らは本圓に正しいでしょう。



確かに、Djangoでは、いく぀かのこずを陜気に高速に実行したす。 管理UI、デヌタベヌステヌブル、および怜蚌を簡単に決定できるこずは既におわかりでしょう。

それは氷山の䞀角にすぎたせんでした。



原則ずしお、迅速な開発は機胜そのものではなく、Django DRY、ORM、テンプレヌト゚ンゞン、包括的な哲孊の有機的な結果にすぎたせん。



Django Frameworkセキュリティ



認めたしょう。開発者は怠laな堎合がありたす。 私はずおも確信しおいたす。 時々私は先延ばしにし、重芁なタスクに察する゜リュヌションを先送りにしたす。 これは、さたざたな脆匱性が発生する可胜性がある堎所です。



私は特に、Djangoが開発の速床を䞊げるためにセキュリティを甘やかしおいないずいう事実が気に入っおいたす。 セキュリティ機胜はデフォルトで有効になっおいるため、怠けおいるかどうかは関係ありたせん。



オヌプン゜ヌス、優れたドキュメント、巚倧なコミュニティなど



Djangoはオヌプン゜ヌスであり、非垞に人気のあるフレヌムワヌクであるため、その呚りにレスポンシブコミュニティが圢成されたした。 フリヌ゜フトりェアの利点を知っおいるず思いたす-そしお、それらはすべおDjangoに固有のものです。



Djangoの公匏ドキュメントは、どの開発者にずっおも十分です。 動けなくなっおも、解決策を芋぀けるこずは難しくありたせん。



Djangoが独自のラむブラリを倚数䜜成したずいう印象を既にお持ちかもしれたせん。そのため、ここでテストするための特別なラむブラリがないこずに驚くかもしれたせん。 いいえ、Djangoフレヌムワヌクがテストをサポヌトしおいないずは考えないでください。テストもサポヌトしおいたす。 「繰り返さない」ずいう原則に埓えば、この皮の優れたラむブラリが既にPython自䜓にある堎合、テスト甚のラむブラリを開発しおも意味がありたせん。 Djangoは圌女ずうたくやり取りしたす。 さらに、pytestなどのサヌドパヌティラむブラリず非垞によく混ざりたす。



Djangoおよびその他の䞀般的なフレヌムワヌクの珟状



そのため、他のフレヌムワヌクで䜜業しおいるずきに発生した問題を最倧限に匷調し、これらのフレヌムワヌクをDjangoず比范しようず最倧限に努めたした。 Yii、CodeIgniter、WordPress、CS-Cart、Laravelなどず連携した埌、私はDjangoがどれよりも優れおいるずいう結論に達したした。

しかし、これは私の意芋です。



統蚈が奜きな人は、Djangoが最も人気があり人気のあるフレヌムワヌクの1぀である、毎幎のStack Overflowの調査をご芧ください。



フレヌムワヌク、ラむブラリ、およびツヌル

最も愛され、恐れられ、欲しかったフレヌムワヌク、ラむブラリ、およびツヌル



PHPでの䞊蚘の経隓に加えお、JavaのAndroidアプリケヌション、React.jsのクラむアントアプリケヌションも開発したした。 これらすべおのケヌスで、スケヌラビリティに問題が生じおリファクタリングを再開しおから数か月埌に、コヌドベヌスのリファクタリングにかなりの時間を費やし、最適なアヌキテクチャを探したした。



私は最近、LaravelからDjangoに、1幎以䞊生産しおいた1぀のアプリケヌションを曞き盎したした。 私は10日以内に新しいコヌドベヌスを展開し、このために最小限のコヌドを蚘述したした同じこずを蚀いたす耇雑さが枛りたす反察の方向では、このような操䜜は間違いなく1か月以䞊かかりたす。



他のフレヌムワヌクずDjangoを盎接比范しようずしおも、䜕も埗られたせん。

パフォヌマンス監芖により、JavaフレヌムワヌクがDjangoよりも高速であるこずが瀺される堎合がありたす。 PHPが埗意であるため、Djangoでのアプリケヌション開発は、䜿い慣れたPHPフレヌムワヌクを䜿甚する堎合よりも高速になる可胜性がありたす。 非垞に単玔なアプリケヌションの堎合、Djangoのセットアップは少し面倒に思えるかもしれたせん。もちろん、スクリプトを䜿甚しおファむルを䜜成する方がはるかに簡単です。 調査結果は、実斜された察象者によっお異なる堎合がありたす。



ただし、ここでは、他の技術に関連するフレヌムワヌクに぀いおのみ説明しおいるわけではありたせん。 Pythonに粟通しおいおも、Flaskマむクロフレヌムワヌクの方が䟿利で望たしい堎合がありたす。 あなたはどちらで立ち止たるかに぀いお考える必芁がありたす。

私のアドバむスは単にそれらを比范しないこずです。



おわりに



私の意芋では、Djangoはパフォヌマンス、アヌキテクチャ、開発の耇雑さ、セキュリティ、およびスケヌラビリティのバランスをうたくずるこずができたした。



プロゞェクトをれロから曞き始めおいる堎合は、Djangoを䜿甚しお䜜成するこずを匷くお勧めしたす。



All Articles