ホームページ  >  記事  >  ウェブフロントエンド  >  開発で Python Django を使用した経験を要約する

開発で Python Django を使用した経験を要約する

php中世界最好的语言
php中世界最好的语言オリジナル
2018-02-26 09:17:101831ブラウズ

今回は、python Django開発の経験、Python Django開発における注意点とは何か、以下は実践的なケースです、見てみましょう。

私が初めて Django に出会ったのは大学 3 年生の時でした。Django を実際にプロジェクトに使用してから約 4 年になります。実は私のお気に入りは Django の ORM フレームワークです。同社のプロジェクトは前から後ろまで分かれており、バックエンドのインターフェイス開発に Django を使用するのは非常に効率的です。


ここでは、Django 開発における小さな経験をいくつかまとめます。まず最も基本的なものについて説明しましょう。

virtualenv を使用して開発環境を分離します

pip を使用してプロジェクトの依存関係を管理します (主にちょっとしたトリック)、pip freeze > を使用して依存モジュールとバージョンを保存します この Web サイトが提供する gitignore.io を使用します. gitignore ファイル管理コード ベース ファイル

パッケージ化と公開

Docker を使用したプロジェクトのパッケージ化と公開

、Django プロジェクトの Dockerfile は特に単純です:

FROM python:3.5
COPY ./requirements.txt /src
WORKDIR /src
RUN pip install -r requirements.txt
COPY . /src
EXPOSE
CMD uwsgi --http :--wsgi-file<path/to/wsgi.py>
この Dockerfile テンプレートは Django プロジェクトの 80% をカバーできます。

ログの設定

Dockerを使用しているため、

ログを

ファイルに書き込むことを諦めて、標準出力に直接書き出すようにしました。

   
# settings.py 
# ...
LOGGING = {
    &#39;version&#39;: 1,
    &#39;disable_existing_loggers&#39;: False,
    &#39;formatters&#39;: {
        &#39;verbose&#39;: {
            &#39;format&#39;: &#39;[application] %(levelname)s %(asctime)s %(module)s %(message)s&#39;
        }
    },
    &#39;handlers&#39;: {
        &#39;console&#39;: {
            &#39;level&#39;: &#39;DEBUG&#39;,
            &#39;class&#39;: &#39;logging.StreamHandler&#39;,
            &#39;stream&#39;: sys.stdout,
            &#39;formatter&#39;: &#39;verbose&#39;
        },
    },
    &#39;loggers&#39;: {
        &#39;app&#39;: {
            &#39;handlers&#39;: [&#39;console&#39;],
            &#39;level&#39;: &#39;DEBUG&#39;,
            &#39;propagate&#39;: True,
        },
    },
}


新しいバージョンの uwsgi では、すでに Web アプリのログを収集し、標準出力に出力できます。ログを収集および管理する必要がある場合は、Docker ログ収集ツールを使用して、Docker コンテナーのログを直接収集できます。

自動テスト

これは純粋なバックエンド プロジェクトであるため、エンジニアは自動テストを通じて独自のコードをテストできます。 Django 自体は、テスト用の優れたサポートを提供します。

sqlite

を使用してテスト データベースを構築すると、テストによって他のシステムへの依存が増加することはありません。少ない労力で開発できます。 自動テスト コードを作成することに加えて、テスト カバレッジをカウントできる必要もあります。現在、coverage.py ツールを使用していますが、

node.js

の istanbul ほど使いやすくはなく、出力レポートも Istanbul ほど詳細で読みやすくはありません。ただし、「デッドコード」をチェックするのには依然として役立ちます。 http コードのテスト

一部のプロジェクトでは、WeChat 認証、支払い、SMS、その他の一般的なシステムなど、より多くのサードパーティ システムに接続する必要があり、垂直ビジネス分野では他のシステムが存在する場合もあります。結局のところ、Python はスクリプト言語であり、コードにはエラーが発生しやすいため、インターフェイスのドッキング コードのこの部分もテストに含める必要があります。

これは通常、応答モジュールを使用して http リクエストを模擬します。

時間制限付きタスク

いくつかの時間制限付きタスクを実行する必要がある Django プロジェクトがいくつかあります。まず第一に、Linux の組み込み crontab は決して使用しないでください。主な問題は、保守コストが高く、この構成はいつか忘れられる可能性があることです。

現在の方法は、Django コマンドの機能を使用して、スケジュールされたタスクをコマンドにカプセル化することです。このコマンドでスケジューラを実行します。次のようにしてください:

import schedule
from django.core.management.base import BaseCommand
class Command(BaseCommand):
    def handle(self, *args, **kwargs):
        schedule.every(45).minutes.do(do_this)
        schedule.every().day.at(&#39;04:00&#39;).do(do_that)
        while True:
            schedule.run_pending()
            time.sleep(1)

これについて質問がある場合は、いつでも私に質問してください。私は学習方法、体系的な学習計画、学習効率について徹底的に研究しました。これが皆さんの節約に役立つことを願っています。回り道。 Python 初心者交換グループの上位 3 つは: 463、中間の 3 つは: 024、最後の 3 つは: 091 です

これらの事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、注目してください。その他のphp中国語ウェブサイト関連記事!

関連記事:

vue CSS アニメーション


image タグと view タグの間のギャップの解決策


サブコンポーネントでスロットが使用される理由


getBoundingCl の使用方法ientRect() へdivコンテナのスクロール固定を実現

以上が開発で Python Django を使用した経験を要約するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。