簡體   English   中英

Django Wagtail 項目 - 與 django.contrib.sites 沖突(使用 django-allauth)

[英]Django Wagtail Project - Conflict with django.contrib.sites (using django-allauth)

將 3rd 方“用戶帳戶”應用程序添加到 Wagtail 項目時遇到問題。

大多數 3rd 方用戶帳戶應用程序(例如 django-alluth)需要 django.contrib.sites 作為依賴項。

當我在 INSTALLED_APPS 中包含 django-allauth 依賴項(包括所需的 django.contrib.sites)以及 wagtail.wagtailsite 應用程序時,我遇到了站點加載正確的問題(例如,靜態文件加載不正確)。 我無法准確地追蹤哪些沒有正確加載,但據我所知,這是 wagtail 'sites' 應用程序和 django 'sites' 應用程序之間的運行時沖突。

似乎應該有一種方法可以讓 wagtail 和 django-allauth 並排運行......有沒有人讓 django-alluth 和 wagtail 很好地協同工作? 有可能嗎,你需要做什么?

非常感謝 django-alluth 和 Wagtail 協同工作的任何提示或示例。

版本:Django 1.10.1、Wagtail 1.8

編輯:

好的,我找到了當我擁有所有 django-allauth 依賴項時我的靜態文件沒有正確加載的原因。 看起來我的項目 base.html 通常被調用的文件正在被 allauth 包中的 baste.html 取代。 我需要阻止調用 django-allauth base.html 文件。 這是覆蓋我通常的 html 部分的 django-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>

我現在要研究如何解決這個問題。 如果你知道怎么做,那將是一個可以接受的答案:)

我已經成功地一起運行。 這是我的需求文件的片段:

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/"),
)

希望這會有所幫助; 您的設置中有什么可以更具體的嗎? 也許共享您的設置文件?

此問題的解決方案是在我的項目特定應用程序之后包含這些 INSTALLED_APPS:

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

這阻止了 allauth base.html 被使用,並且我的 'myApp1' base.html 正確加載。

我沒有意識到 INSTALLED_APPS 的順序會影響加載行為。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM