Django Wagtail 项目 - 与 django.contrib.sites 冲突(使用 django-allauth)
Django Wagtail Project - Conflict with django.contrib.sites (using django-allauth)
在向 Wagtail 项目添加第 3 方 'user accounts' 应用程序时,我 运行 遇到了问题。
大多数第 3 方用户帐户应用程序(例如 django-alluth)需要 django.contrib.sites 作为依赖项。
当我在 INSTALLED_APPS 中包含 django-allauth 依赖项(包括必需的 django.contrib.sites)以及 wagtail.wagtailsite 应用程序时,我 运行 遇到了网站问题正确加载(例如,静态文件无法正确加载)。我无法准确找到未正确加载的内容,但据我所知,这是 wagtail 'sites' 应用程序和 django 'sites' 应用程序之间的 运行时间冲突。
似乎应该有办法让 wagtail 和 django-allauth 运行ning 并排...有人让 django-alluth 和 wagtail 很好地协同工作吗?这可能吗?你需要做什么?
非常感谢 django-alluth 和 Wagtail 一起工作的任何提示或示例。
版本:
姜戈 1.10.1,
鹡鸰 1.8
编辑:
好的,我找到了为什么当我拥有所有 django-allauth 依赖项时我的静态文件无法正确加载的原因。看起来我通常被调用的项目 base.html 文件正在被 allauth 包中的 baste.html 取代。我需要阻止调用 django-allauth base.html 文件。这是 django-allauth base.html 覆盖了我常用的 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 的顺序会影响加载行为。
谢谢。
在向 Wagtail 项目添加第 3 方 'user accounts' 应用程序时,我 运行 遇到了问题。
大多数第 3 方用户帐户应用程序(例如 django-alluth)需要 django.contrib.sites 作为依赖项。
当我在 INSTALLED_APPS 中包含 django-allauth 依赖项(包括必需的 django.contrib.sites)以及 wagtail.wagtailsite 应用程序时,我 运行 遇到了网站问题正确加载(例如,静态文件无法正确加载)。我无法准确找到未正确加载的内容,但据我所知,这是 wagtail 'sites' 应用程序和 django 'sites' 应用程序之间的 运行时间冲突。
似乎应该有办法让 wagtail 和 django-allauth 运行ning 并排...有人让 django-alluth 和 wagtail 很好地协同工作吗?这可能吗?你需要做什么?
非常感谢 django-alluth 和 Wagtail 一起工作的任何提示或示例。
版本: 姜戈 1.10.1, 鹡鸰 1.8
编辑:
好的,我找到了为什么当我拥有所有 django-allauth 依赖项时我的静态文件无法正确加载的原因。看起来我通常被调用的项目 base.html 文件正在被 allauth 包中的 baste.html 取代。我需要阻止调用 django-allauth base.html 文件。这是 django-allauth base.html 覆盖了我常用的 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 的顺序会影响加载行为。
谢谢。