サブプロジェクトのテストケースを作成します。
テーブルのその後の建設は、このサブプロジェクトで発見されていない場合にはDjango、settings.py-> INSTALLED_APPS年におけるサブプロジェクトを高めるために、プロジェクトの必要性の新しい名前でサブプロジェクトのテストケースを作成し、すなわち「テストケース」、または他に、有効になります。
各クラスは再びそれを書くために多くの問題を持っている場合、テーブルの建設は、私たちが書くことができ、この時間は、フィールドの共通の親クラス、テーブルの残りの部分を引き抜く場合は、テーブルの構造は、いくつかの公共のフィールド間の異なるテーブルを持つことになりますとき使用している場合、継承ができます。テーブルの構成で、親テーブルが作成されないように注意してください、そんなに特別な声明が必要。詳細については、例を参照してください
ジャンゴで多くの関係のテーブルの構築、2つのテーブルが、多くの関係を達成するために、第3のテーブルを作成してある場合
クラス BaseModel(models.Model): #の親クラス CREATE_TIME = models.DateTimeField(auto_now_add =真、verbose_name = ' 作成された' ) UPDATE_TIME = models.DateTimeField(auto_now =真、verbose_name = ' 修正' ) is_delete = models.BooleanField (verbose_name = 「削除」、デフォルト=偽)#デフォルト= falseの表現が実際に削除されていない場合は、偽のマークされ、削除 クラス:メタを 抽象 = Trueの#はちょうど継承するクラスを宣言し、作成されていませんこのテーブル クラス CaseSet(BaseModel): #親クラスを継承 = models.CharField名(verbose_name = ' コレクション名'、MAX_LENGTH = 60 ) DESC = models.CharField(= verbose_name ' コレクションの説明'、MAX_LENGTH = 70 ) DEF __str__ (セルフ): 返すself.nameの クラスメタ- : という名前のDB_Table、 = " case_set 「 verbose_name = 」ユースケースコレクションテーブル" verbose_name_plural = verbose_name
クラスケース(BaseModel):#たとえばテーブル
タイトル= models.CharField(verbose_name = 'タイトルのと'、80 = MAX_LENGTH、db_index =真、UNIQUE = TRUE)
DESC = models.CharField(= verbose_name '使用が記載'、MAX_LENGTH = 120 )
method_choice = [
[0、 'GET']、
[1、 'POST']、
[2 'PUT']、
[3、 '削除']
]
メソッド= models.SmallIntegerField(= method_choice選択肢、verbose_name = '要求モード'デフォルト= 0)
URL = models.URLField(= 50 MAX_LENGTH、verbose_name ='リクエストURL ')
のparams = models.TextField(verbose_name ='パラメータ要求')
run_count = models.IntegerField(= verbose_name'実行時間、デフォルト= 0、ヌル= Trueの場合、空白=真)
RUN_TIME =モデル。DateTimeField型(verbose_name = 'ランタイム'、ヌル= Trueの場合、空白=真)
case_set = models.ManyToManyField(CaseSet、db_constraint = Falseを、verbose_name = '用例集合'、ヌル= Trueの場合、空白=真)
多くの関係を表す#ManyToManyField、ケースとcase_setテーブルは、この線の上、多くの関係は、実際に多くの関係を記録する第3のテーブルを作成します。
デフ__str __(自己):
戻りself.titleの
クラスのMeta:
DB_Tableの= 'の場合'
verbose_name = '用例表'
verbose_name_plural = verbose_name
項目の前と後の分離結果の最後には、django.http輸入JsonResponseから輸入されるようにJSON文字列のニーズを返すために、リターンの後端をレンダリングするために使用することはできません
場合に、複数のサブプロジェクトのURLを管理する方法?
すべてのURLが、それはより多くの混乱になるのDjangoプロジェクトの下urls.pyに設定されている場合は、複数のサブプロジェクトでのプロジェクトでは、我々は別の、個々の構成の各サブプロジェクトのurls.pyのためにファイルを作成することができます各項目のURLは、単にサブプロジェクト構成で合計urls.pyでのDjangoのプロジェクトは、URLにアクセスしてください。
パラメータ校正形式のジャンゴ
导入:ジャンゴインポートフォームから
これは、使用して辞書データにチェックフォーム辞書によって返されます ** form.cleaned_dataを
単一のフィールドのチェックに属する、すなわちデフclean_method、クリーンを開始するために、チェックサムフィールドmethonとして、カスタム検証ルールで形成することができ、それはきれいな直接DEF、複数のフィールド場合はチェックされています
この方法の一つ:
#フォーム校验请求参数 クラスCaseForm(forms.Form): "" " 校验请求参数""" タイトル = forms.CharField(MAX_LENGTH = 50、MIN_LENGTH = 2 ) DESC = forms.CharField(MAX_LENGTH = 60、必須= 偽) メソッド = forms.IntegerField() #0 1 2 3 URL = forms.URLField() のparams = forms.CharField(MAX_LENGTH = 100 ) DEF clean_title(自己): #校验单个字段 表題= self.cleaned_data.get(' タイトル' ) であれば models.Case.objects.filter(タイトル=タイトル).count()>0: 昇給 ValidationErrorを(「ユースケースのタイトルが既に存在する」)#は、例外をスローするには、コードが下向きに進まない リターンタイトル DEFクリーン(セルフ): #1 フィールドのチェック、複数 タイトル= self.cleaned_data.get(「タイトル」) メソッド = self.cleaned_data.get(' メソッド' ) 際の基準: クラスCaseView(ビュー): DEF POST(自己、要求): フォーム = request.POSTのCaseForm() IF ()form.is_valid: 印刷("これは、パリティの形態である' ) models.Case.objects.create( ** form.cleaned_data) データ {= ' コード':0、' MSG ':' 正常に加え' } ほか: 印刷(form.errors。 as_data()) データ = { ' コード':-1、' MSG ':' パラメータ異常' } 戻り jsonResponse(データ)
方法2:このデータベースには関係があり、チェックする簡単な方法があります
クラスCaseForm2(forms.ModelForm): クラスメタ- : #フィールド= '__all__である'すべてのフィールドを表す# #二つのフィールドのフィールド= [ 'メソッド'、 'URL']#代表チェック 除外する= [ ' case_set ' ] #の負フィールド モデル= models.Case #がどのテーブル会合をいう :を参照する際に クラスCaseView(ビュー): DEF POST(自己、要求): フォーム = CaseForm2(request.POST) IF (form.is_valid): 印刷(" これは、パリティの一形態である" ) )(form.save#save方法は、直接、保存データベースに接続され、我々は第二の方法を書き込むことができるように、次の行で #によってテストにデータを挿入し、この作動表を見つける手動models.Case.objects.create(** form.cleaned_data)位テーブル データ= { ' コード':0、' MSG ':' 正常に加え' } ほか: プリント(form.errors.as_data()) データ = { ' コード':-1、' MSG ':' パラメータエラー' } 戻り jsonResponse(データ)
カスタム戻り値の型
django.http インポートJsonResponse DEF NbResponse(コード= 0、MSG = ' 操作成功'、** kwargsから): 応答 = { ' コード':コード、' MSG ' :MSG} response.update(kwargsから) を返す JsonResponse(応答を、json_dumps_params = { ' ensure_ascii ':FALSE})
あなたは、データベーステーブル内の情報がわからない場合は、model1.pyファイルにデータベーステーブルによって生成されたコマンドの下で、あなたは書く必要はありませんし、テーブルとテーブルの間に関連がある場合、このメソッドは、単一のテーブルを生成します。関係、手動で関連付ける必要があります。
python manage.py inspectdb> model1.py
どのようにDjangoの接続のRedis
以下は、settings.pyに配置されました
キャッシュ= { " デフォルト" :{ " BACKEND ":" django_redis.cache.RedisCache " 、 " LOCATION ":" のRedis://118.23.3.41:6399/0 " 、 " OPTIONS " :{ " CLIENT_CLASS ":" django_redis。 client.DefaultClient " " CONNECTION_POOL_KWARGS ":{ " のmax_connections 」:100 }、 " パスワード":" 666667&* "、 #密码 } }、 " redis2 " :{ " BACKEND ":" django_redis.cache.RedisCache " 、 " LOCATION ":" のRedis://127.0.0.1:1分の6379 " 、 " OPTIONS " :{ " CLIENT_CLASS ":" django_redis.client.DefaultClient 」、 "CONNECTION_POOL_KWARGS ":{ " MAX_CONNECTIONS " 100、' decode_responses ' :真}、 " PASSWORD ":" 123456 "、 #密码 } } } #Redisの配置