2017-02-14 9 views
1

Wagtailプロジェクトにサードパーティの「ユーザーアカウント」アプリケーションを追加する際に問題が発生しています。Django Wagtail Project - django.contrib.sitesとの競合(django-allauthを使用)

ほとんどのサードパーティのユーザーアカウントアプリケーション(django-alluthなど)では、django.contrib.sitesが依存関係として必要です。

wagtail.wagtailsiteアプリとともにINSTALLED_APPSにdjango-allauthの依存関係(必要なdjango.contrib.sitesを含む)を含めると、正しく読み込まれたサイトの問題が発生します(静的ファイルが正しく読み込まれず、例えば)。私は正しくロードされていないものを正確に追跡することができませんが、私が知ることから、wagtailのサイトのアプリとdjangoのサイトのアプリの間のランタイムの競合です。

wagtailとdjango-allauthを並行して実行する方法があるようです...誰もがdjango-alluthとwagtailをうまく組み合わせて使用​​していますか?それは可能なのですか?あなたは何をする必要がありましたか?

django-alluthとWagtailが一緒に働いているヒントや例があれば幸いです。

バージョン: ジャンゴ1.10.1、 セキレイ1.8

編集:私はすべてのジャンゴ - allauth依存関係を持っているとき、私の静的ファイルが正しく読み込まれない理由

さて、私が見つけました場所。通常、呼び出される私のプロジェクトのbase.htmlファイルは、allauthパッケージのbaste.htmlによって置き換えられているようです。 django-allauthのbase.htmlファイルが呼び出されないようにする必要があります。ここに私の通常のHTMLセクションを上書きされジャンゴ - allauth base.htmlです:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>{% block head_title %}{% endblock %}</title> 
    {% block extra_head %} 
    {% endblock %} 
    </head> 
    <body> 
    {% block body %} 

    {% if messages %} 
    <div> 
     <strong>Messages:</strong> 
     <ul> 
    {% for message in messages %} 
    <li>{{message}}</li> 
    {% endfor %} 
     </ul> 
    </div> 
    {% endif %} 

    <div> 
     <strong>Menu:</strong> 
     <ul> 
    {% if user.is_authenticated %} 
    <li><a href="{% url 'account_email' %}">Change E-mail</a></li> 
    <li><a href="{% url 'account_logout' %}">Sign Out</a></li> 
    {% else %} 
    <li><a href="{% url 'account_login' %}">Sign In</a></li> 
    <li><a href="{% url 'account_signup' %}">Sign Up</a></li> 
    {% endif %} 
     </ul> 
    </div> 
    {% block content %} 
    {% endblock %} 
    {% endblock %} 
    {% block extra_body %} 
    {% endblock %} 
    </body> 
</html> 

私は今、この問題を解決する方法を検討するつもりです。あなたがどのように知っていれば、それは受け入れられる回答でしょう:)

答えて

1

この問題を解決するには、私のプロジェクト特定のアプリの後にこれらのINSTALLED_APPSを含めることでした。

... 
'myApp1' 
... 
'allauth', 
'allauth.account', 
'allauth.socialaccount', 

これが使用されているからallauthのbase.htmlを防止し、正確に私の「myApp1」base.html搭載。

INSTALLED_APPSの順番が読み込み動作に影響することはわかりませんでした。

ありがとうございました。

+0

'TEMPLATES'で' APP_DIRS'が有効になっている場合、 'INSTALLED_APPS'命令はテンプレートを見つけるために重要です。 Djangoは、一致するテンプレートが見つかるまで順番にアプリを実行します。これが私の例で最後にリストされた 'AUTH_APPS'を持っている理由です。いいキャッチ! – FlipperPA

1

私は一緒に正常に実行しています。ここに私の要求事項の抜粋だファイル:

Django>=1.10,<1.11 
django-allauth==0.27.0 
wagtail>=1.8,<1.9 

は、ここで私はインストール済みのアプリケーションを処理しています方法は次のとおりです。

PREREQ_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.humanize', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    ... 
] 

AUTH_APPS = [ 
    'django.contrib.sites', 
    'allauth', 
    'allauth.account', 
    'allauth.socialaccount', 
    'allauth.socialaccount.providers.facebook', 
    'allauth.socialaccount.providers.google', 
    'allauth.socialaccount.providers.twitter', 
] 

SITE_ID = 1 

WAGTAIL_APPS = [ 
    'wagtail.wagtailcore', 
    'wagtail.wagtailadmin', 
    'wagtail.wagtaildocs', 
    'wagtail.wagtailsnippets', 
    'wagtail.wagtailusers', 
    'wagtail.wagtailimages', 
    'wagtail.wagtailembeds', 
    'wagtail.wagtailsearch', 
    'wagtail.wagtailsites', 
    'wagtail.wagtailredirects', 
    'wagtail.wagtailforms', 
    'wagtail.contrib.modeladmin', 
    'wagtail.contrib.table_block', 

    'wagtailfontawesome', 
    'wagtailerrorpages', 
    'wagtailgridder', 
    'taggit', 
    'modelcluster', 
] 

PROJECT_APPS = [ 
    ... 
] 

INSTALLED_APPS = PREREQ_APPS + WAGTAIL_APPS + PROJECT_APPS + AUTH_APPS 

ミドルウェア:

# Middleware 
MIDDLEWARE_CLASSES = [ 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 

    'wagtail.wagtailcore.middleware.SiteMiddleware', 
    'wagtail.wagtailredirects.middleware.RedirectMiddleware', 
] 

と静的ファイル:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static/"), 
) 

うまくいけば、これは役に立ちます。あなたのセットアップの中には、より具体的なものがありますか?おそらくあなたの設定ファイルを共有していますか?

+0

ありがとうございます!私は次のカップル日以内にこれをセットアップと比較し、できるだけ早くあなたに戻ってきます。 – SecretSasquatch

+0

編集された質問を参照してください。問題の原因を見つけました... – SecretSasquatch

関連する問題