django2.Xルーティングモジュール互換書き込み仕様(厄介な名前空間)を含みます


使用する場合、プロジェクトファイルの従来のルーティングフレームワークは、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、名前空間を)
ジャンゴ== 1.8.2

 

デフは、(引数、名前空間= なし):
    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、名前空間)
ジャンゴ== 2.2.5

 

おすすめ

転載: www.cnblogs.com/jrri/p/11605674.html