[英]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.