Django 開発経験を記録する

Jun 16, 2016 am 08:43 AM
django python 経験

概念的レベル

概要

Django は MVC に属する Web フレームワークです。

モデル: データベースの処理を担当します

ビュー: モデルから取得したデータの取得または拡張を担当します

コントローラー: これは Django 自体です

プロジェクトとアプリの違い

プロジェクト: さまざまな設定ファイルを提供します アプリ: モデルやビューを含む関数の組み合わせは、Python が認識できるように「__init__.py」をルート ディレクトリに追加する必要があります

ManyToMany とForeignKey の違い

外部キーの例:

従業員の出勤記録 - 従業員は複数の出勤記録を持つことができますが、1 つのパンチイン レコードは 1 つの従業員属性 (1 対多) のみを持つことができます

ManyToMany の例:

記事には複数のタグを付けることができ、タグに対応する記事も複数 (多対多) にすることができます

ManyToMany にも特別な構造があり、Twitter のフォローによく似ています。

A は B に従うが、B は A に従わないとします。この関係を実現するには、Meta

で symetric=False を設定します。

セクシーコード

これが私が理解して「めちゃくちゃセクシー」だと思うコードです:

lambda x, y: x+y 
ログイン後にコピー

Lambda は実際には JS の匿名関数と同じ効果があります。名前を付けるのが面倒であればそのまま放り込んでください。Lambda はデフォルトで内部の値を返すため、return する必要はありません。

map(lambda x: x+1, [1,2,3]) #得到[2,3,4] 
ログイン後にコピー

つまり、前の関数はそれぞれ 1 回実行されます

reduce(lambda x, y: x+y, [1,2,3]) #得到6 
ログイン後にコピー

つまり、各操作は前の要素で 1 回実行されます

[i for i in xrange(0,100) if i%2==0] 
ログイン後にコピー

100 未満の偶数をすべて取得します。これは学術用語では「リスト理解」と呼ばれますが、実際のケースでは、トラバースのための優れたツールです。

Q(**{key:value}) 
ログイン後にコピー

トレーニング中に学んだことは、2 つの Django 関数 Q と F は文字列を受け入れない、つまり Q("abc=1") は受け入れられないということです。しかし、このコードの魅力的な点は、この制約が完全に取り除かれ (実際、キーワードのペアが書き換えられる)、好みのクエリ セグメントを自由に構築できることです。これは、検索関数を構築するときに非常に役立ちます。例:

q_dict = reduce(lambda x,y: x&y, [ Q(**{"%s__slug_name" % taxonomy:request.GET.get(taxonomy)}
    ) for taxonomy in request.GET.keys() if taxonomy in SEARCHABLE_LIST ])
@property 
ログイン後にコピー

この @ 記号の使い方を「修飾子」と呼びますが、個人的にはここが他の言語に比べて Python の美しいところだと感じています。修飾子の作り方についてはドキュメントを読むのが良いでしょう。ここで私が言っているのは、クラスで @property を使用すると、この関数は自動的にクラスのプロパティになるということです。これは、js の set と get
に非常に似ています。 super super クラスを使用すると、super が出現すると、継承されたサブクラスは独自の関数を実行するのではなく、super
で指定された関数を実行します。 注釈を付けて集計します。これら 2 人は、新しい query_set を構築するときに非常に役立ちます。たとえば、コンピュータの合計価格を計算したい場合は、ComputerManager で

を使用します。
def get_query_set(self):
query_set = super(ComputerManager, self).get_query_set()
query_set = query_set.annotate(price=Sum('devices__price'))
ログイン後にコピー

このように、各コンピューターには合計価格が設定されています。これは製品セットを構築するときに非常に便利ですが、admin.py の記述は少し冗長です。

エラーセット

データをフェッチするとき: XXManager オブジェクトは反復可能ではありません

これは、Django がコードの実行中に SQL ステートメントを取得してクエリを実行しないためです (したがって、SQL ステートメントを取得することは不可能です)。したがって、実際のデータ エンティティを取得するには、.get()、.all()、.filter を使用する必要があります

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

hadidb:pythonの軽量で水平方向にスケーラブルなデータベース hadidb:pythonの軽量で水平方向にスケーラブルなデータベース Apr 08, 2025 pm 06:12 PM

hadidb:軽量で高レベルのスケーラブルなPythonデータベースHadIDB(HadIDB)は、Pythonで記述された軽量データベースで、スケーラビリティが高くなっています。 PIPインストールを使用してHADIDBをインストールする:PIPINSTALLHADIDBユーザー管理CREATEユーザー:CREATEUSER()メソッド新しいユーザーを作成します。 Authentication()メソッドは、ユーザーのIDを認証します。 fromhadidb.operationimportuseruser_obj = user( "admin"、 "admin")user_obj。

Python:主要なアプリケーションの調査 Python:主要なアプリケーションの調査 Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間のPython計画:現実的なアプローチ 2時間のPython計画:現実的なアプローチ Apr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

MongoDBデータベースパスワードを表示するNAVICATの方法 MongoDBデータベースパスワードを表示するNAVICATの方法 Apr 08, 2025 pm 09:39 PM

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

Amazon AthenaでAWS接着クローラーの使用方法 Amazon AthenaでAWS接着クローラーの使用方法 Apr 09, 2025 pm 03:09 PM

データの専門家として、さまざまなソースから大量のデータを処理する必要があります。これは、データ管理と分析に課題をもたらす可能性があります。幸いなことに、AWS GlueとAmazon Athenaの2つのAWSサービスが役立ちます。

高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? 高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? Apr 08, 2025 pm 06:03 PM

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

Redisでサーバーを開始する方法 Redisでサーバーを開始する方法 Apr 10, 2025 pm 08:12 PM

Redisサーバーを起動する手順には、以下が含まれます。オペレーティングシステムに従ってRedisをインストールします。 Redis-Server(Linux/Macos)またはRedis-Server.exe(Windows)を介してRedisサービスを開始します。 Redis-Cli ping(Linux/macos)またはRedis-Cli.exePing(Windows)コマンドを使用して、サービスステータスを確認します。 Redis-Cli、Python、node.jsなどのRedisクライアントを使用して、サーバーにアクセスします。

Redisキューの読み方 Redisキューの読み方 Apr 10, 2025 pm 10:12 PM

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

See all articles