在向Wagtail项目添加第三方“用户帐户”应用时,我遇到了问题。
大多数第三方用户帐户应用(例如django-alluth)都需要django.contrib.sites作为依赖项。
当我在INSTALLED_APPS中包含django-allauth依赖项(包括所需的django.contrib.sites)以及wagtail.wagtailsite应用程序时,我遇到了网站正确加载的问题(静态文件无法正确加载,例)。我无法准确追踪未正确加载的内容,但据我所知,这是wagtail'site'应用程序和django'sites'应用程序之间的运行时冲突。
似乎应该有一种方法让wangtail和django-allauth并排运行......有没有人有django-alluth和wagtail一起工作得很好?是否有可能,你需要做什么?
django-alluth和Wagtail合作的任何提示或示例都非常感谢。
版本: Django 1.10.1, W !! 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>
我现在要研究如何解决这个问题。如果你知道如何,那将是一个可以接受的答案:)
答案 0 :(得分: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/"),
)
希望这会有所帮助;您的设置中有什么可以更具体的吗?也许共享您的设置文件?
答案 1 :(得分:1)
此问题的解决方案是在我的项目特定应用之后包含这些INSTALLED_APPS:
...
'myApp1'
...
'allauth',
'allauth.account',
'allauth.socialaccount',
这阻止了allauth base.html的使用,以及我的myApp1&#39; base.html正确加载。
我没有意识到INSTALLED_APPS的顺序会影响加载行为。
感谢。