使用する場合、プロジェクトファイルの従来のルーティングフレームワークは、URL
urlpatternsの=を[
URL(R&LT 'ユーザー^ /'( 'user.urls'、ネームスペース= 'ユーザ')を含む)、
URL(R&LT' ^'(」製品が挙げられます。 URLを、名前空間= 『製品』))、
]
エラー情報:
APP_NAMEを提供せずに含まれるのModule1のSetザ・APP_NAME属性をサポートする、またはパターンのリストを含む2要素のタプルを渡していません()が含まれている名前空間を指定します。 。そしてAPP_NAME代わり
溶液:
別々に設けられているUR Lルーティングファイルパス、 APP_NAMEのアプリケーション名と名前空間の名前空間を。
次の形式:
urlpatterns = [ URL(R ' ^ユーザ/ '、含む((' user.urls '、' ユーザ')、ネームスペース = ' ユーザ' ))、 URL(Rは' ^ '、((含む' goods.urlsを'、' 財')、名前空間 = ' 財' ))、 ]
若しくは
のみを設定したアプリケーションのURLファイルのルーティングパスを、名前空間 URLパスと同じ名前のアプリケーション。
次のようにフォーマットは次のとおりです。
urlpatterns = [ URL(R ' ^ユーザ/ '、含む(' user.urls ' ))、 URL(Rは' ^ '、(含める' goods.urlsを' )) ]
添付ファイル:
ファイルが使用中のURLルーティングアプリケーションは機能が含まれている場合は、ファイル内の変数を追加することができます APP_NAME = [ " アプリケーション名" ]問題を解決します。
----------------------------------------
分析
ソースを表示
学習することができます:
django2.X、モジュールは、APP_NAME更新入力仕様のアプリケーション名が含まれています。
3つの必要なパラメータを含める:urlconf_module、URLのファイルパスAPP_NAME、パッケージ名、名前空間、名前空間の 3つの属性: サブをURLファイルパスはほかに、渡す必要があります。 渡すことはできませんAPP_NAMEを、通過しないかもしれない名前空間を、でも2も入ってくるOK。ない けど... 私たちはただ渡すことはできません名前空間を! 私達はちょうど渡すことはできません名前空間! だけでなく、着信名前空間! 着信アプリケーションファイルパスのURLのみルーティング、その後、ニックネームのデフォルトと同じ名前のアプリケーション。 あなたがする必要がある場合は別の設定、他の持っているし、アプリケーションの名前をニックネームを、それはアプリケーション名を渡す必要があります。ソース・セグメント:
デフ(引数、名前空間=なし、APP_NAME =含めるなし): 場合 APP_NAME と ない名前空間は: 引き上げるとValueError(「APP_NAMEを指定する場合は、名前空間を指定する必要があります」) の場合:でisinstance(引数、タプル) #呼び出し可能な名前空間のヒントを返す 場合は、名前空間を: 調達 ImproperlyConfigured(「名前空間を提供して動的モジュールの名前空間をオーバーライドすることはできません」) urlconf_module、APP_NAME、名前空間 = argの 他: #を名前空間ヒントません-手動で提供する名前空間を使用 urlconf_module = argの 場合でisinstance(urlconf_module、six.string_types): urlconf_module = import_module(urlconf_module) パターン = GETATTR(urlconf_module、' urlpatterns ' 、urlconf_module) #をせずに(私たちはパターンを反復処理できることを確認しますこの、いくつかの #のテストケース)が解除されます。 もしでisinstance(パターン、(リスト、タプル)) のため url_patternの中パターン: #1 テストLocaleRegexURLResolverを含む内で使用される場合、 #これが許可されていないので、これはエラーをスローする必要があります! 場合でisinstance(url_patternの、LocaleRegexURLResolverは): 調達ImproperlyConfigured( ' 付属のURLconfにi18n_patternsを使用すると、許可されていません' ) のリターン(urlconf_module、APP_NAME、名前空間を)
デフは、(引数、名前空間= なし): APP_NAME = なし の場合でisinstance(引数、タプル): #呼び出し可能な名前空間ヒントを返します。 してみてください: urlconf_module、APP_NAME = 引数を 除き、ValueErrorを: 場合、名前空間は: 上げるImproperlyConfiguredを( 「動的モジュールの名前空間をオーバーライドすることはできません」 「は名前空間を提供します。」 ) 上げるImproperlyConfiguredを( "()を含むこと%dの組を通過することはできません。通過「 」パターンとAPP_NAMEのリストを含む2組を、そして「 」の代わりに)(含むように名前空間の引数を提供します。「%のLEN(引数) ) 他: #名前空間ヒント-手動で提供する名前空間を使用。 urlconf_module = argの 場合でisinstance(urlconf_module、STR): urlconf_module = import_module(urlconf_module) パターン = GETATTR(urlconf_module、' urlpatterns ' 、urlconf_module) APP_NAME= GETATTR(urlconf_module、「APP_NAME 」、APP_NAME) であれば、名前空間と ないAPP_NAME: 上げるImproperlyConfigured( 「APP_NAMEを提供せずに、名前空間を指定する(含める)を」 「サポートされていない付属でAPP_NAME属性を設定する」 " モジュール、またはパターンのリストを含む2組を渡し、「 」代わりAPP_NAME。' 、 ) 、ネームスペース =名前空間またはAPP_NAME #パターンは(これなしで、いくつかを繰り返すことができることを確認します 。#のテストケースが破損します)。 場合でisinstance(パターン、(リスト、タプル)) のために url_patternの中のパターン: パターン = GETATTR(url_patternの、' パターン' 、なし) 場合でisinstance(パターン、LocalePrefixPatternは): 上げるImproperlyConfigured( ' 付属のURLconfにi18n_patternsを使用が許可されていないことを。" ) リターン(urlconf_module、APP_NAME、名前空間)