web-dev-qa-db-ja.com

Django-allauthのデフォルトテンプレートを編集する方法は?

Django 1.10を使用していて、ログイン、サインインなどのためにallauthのアプリを自分のWebサイトに追加したい。pipからallauthをインストールし、allauthからテンプレートを配置しようとしました。テンプレートフォルダ内のリポジトリとそれらを呼び出しますが、それを機能させる方法がわかりません。

12

正解はここにあります: https://stackoverflow.com/a/31282443/4992248

  1. _yourproject/templates/allauth/account/_を作成し、_/myproject/Lib/site-packages/allauth/templates/account_から編集する必要のあるすべてのテンプレートをここに貼り付けます。

socialaccountテンプレートを変更する必要がある場合は、_yourproject/templates/allauth/socialaccount/_も作成します。

  1. 'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')],のように_'DIRS'_の_settings.py_を編集します

最後に、次のようになります。

_TEMPLATES = [
    {
        'BACKEND': 'Django.template.backends.Django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')],
        'APP_DIRS': True,
        'OPTIONS': {
            'debug': False,
            'context_processors': [
                'Django.template.context_processors.debug',
                'Django.template.context_processors.request',
                'Django.template.context_processors.media',
                'Django.contrib.auth.context_processors.auth',
                'Django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
_
  1. パッケージが更新されるとすべての変更が失われるため、_/Lib/site-packages/*_でコードを変更しないでください。
18
TitanFighter

モジュールのドキュメントが古くなっているようです。 Django 1.10の場合、次のことを行う必要があります。

  • モジュールをpipでダウンロードする
  • iNSTALLED_APPS(/settings.pyファイル)に以下を追加します
_'Django.contrib.sites', # first place
'allauth',  # after your modules declarations
'allauth.account',
'allauth.socialaccount',
_
  • allauthに必要なバックエンド宣言と別のものを追加します
_AUTHENTICATION_BACKENDS = (
'Django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
SITE_ID = 1
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = True
_
  • for Django 1.10は、TEMPLATESセクション(Django-allauth == 0.28.0)を変更する必要はないようです。「pipfreeze」コマンドを使用してモジュールのバージョンを確認できます。

  • テンプレートを上書きする人工モジュールを作成します。たとえば、私のプロジェクトの名前はirj_appで、_sharedという名前の新しいアプリケーションを追加しました。次の構造になり、「allauth」宣言の前にINSTALLED_APPSに追加します。

_irj_app / _shared_

  • 「_shared」フォルダ内にテンプレートディレクトリを作成し、allauthテンプレートをオーバーライドする「base.html」というファイルを追加しました。私が見つけたのは、Django-allauthが以前に作成したレイアウトをオーバーライドするテンプレートを作成することです。次に、この動作を変更するには、Django-allauthテンプレートをインターセプトする必要があります。また、この認証メカニズムの任意のテンプレートをオーバーライドできます。たとえば、私は持っています:

_irj_app / _shared / templates / base.html_

_irj_app / _shared / templates / account / base.html_

_irj_app / _shared / templates / account / signup.html_

irj_app / _shared / templates / _shared / adminlte-template / ... (template for other modules)

それが役に立てば幸い

6
andhdo

これを試して:

以下のように、アプリのテンプレートディレクトリにaccountディレクトリを作成します

yourppname/templates/account

およびファイル

yourppname/templates/account/login.html

yourppname/templates/account/signup.html

以下をテンプレートディレクトリに追加しますアプリ名をアプリ名に変更することを忘れないでください

os.path.join(BASE_DIR、 'yourappname'、 'templates')

TEMPLATES = [
{
    'BACKEND': 'Django.template.backends.Django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'yourappname', 'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'Django.template.context_processors.debug',
            'Django.template.context_processors.request',
            'Django.contrib.auth.context_processors.auth',
            'Django.contrib.messages.context_processors.messages',
        ],
    },
},
]
3
utri

これは、Django 2.1.7およびDjango-allauth0.39.1を使用して私のために機能しました:

  • フォルダーyourapp/templates/accountという名前のフォルダーを作成し、最後に構造がyourapp/templates/account/になり、login.htmlsignup.htmlなどのオーバーライドするすべてのテンプレートを追加します。
  • settings.pyでは私のテンプレートDirsは同じままです

    'DIRS': [os.path.join(BASE_DIR, 'templates')],

1
Sanel Delic

Allauthテンプレートは、通常のテンプレートオーバーライドメソッドと同じようにオーバーライドできます。

  1. テンプレートディレクトリを設定する

TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), os.path.join(BASE_DIR,'templates'))

  1. テンプレートディレクトリはプロジェクトディレクトリにあります。テンプレートディレクトリ内に移動し、create a directory named allauth, inside allauth create a template directory and inside that create a directory accounts

  2. Allauthテンプレートと同じ名前のhtmlファイルを作成します。テンプレート名の詳細については、 allauth githubリポジトリ を参照してください。

0
cutteeth

Djangoの場合-allauth == 0.36.0

  • ログインページをカスタマイズしたいとしましょう。
  • tEMPLATES設定を変更する必要はありません
  • プロジェクトテンプレートフォルダにaccountという名前のフォルダを作成し、次のようにします。
  • プロジェクトのクローンを作成するgit clone https://github.com/pennersr/Django-allauth cd Django-allauth/allauth/templates/account
  • Base.htmlとlogin.htmlを作成したアカウントフォルダーにコピーします
  • 私は試しました、それは動作します。

公式リンク

0
C.K.

私はDjango 3.0.4 with Django-allauth 0.41.0

プロジェクトディレクトリにフォルダtemplatesを追加します。フォルダtemplates内に、app_nameを使用して別のフォルダを追加します。テンプレートlogin.htmlの場合は、フォルダaccountsを作成します。

したがって、フルパスは

 /project_name/templates/accounts/login.html

settings.pyのTEMPLATEDirsは同じままです

'DIRS': [os.path.join(BASE_DIR, 'templates')]

Django-allauth docテンプレート

0
Diego Bianchi