不确定如何将其他上下文数据传递到各种allauth表单中,这些表单包括我自己的模板。对于我自己的观点,我正在使用get_context_data(),它工作正常。我将小模板包含到主模板中,例如页眉,页脚,侧边栏等。一切正常,但当allauth启动时,例如登录,注销,电子邮件确认窗口等,我的上下文变量未传递,因此左侧的图像边栏没有显示,但是allauth可以正常工作。
我已经尝试了一些方法,但我认为理想的选择是从该功能的allauth视图继承,例如登录,密码重置,确认电子邮件等,提供我自己的上下文变量数据。
在我的accounts.views.py中,我期望它会失败,因为模板不存在,但是表单仍然显示,并且UserProfile图像未显示在左侧栏中。
from allauth.account.views import ConfirmEmailView
class EmailViewExt(ConfirmEmailView):
template_name = "account/signup_alternate1.html"
def get_context_data(self, **kwargs):
context = super(ConfirmEmailView).get_context_data(**kwargs)
context['userprofile'] = UserProfile.objects.get(user=self.request.user)
return context
在我的模板left_bar_base.html中,该模板包含在我覆盖的allauth模板中。
{% if userprofile.avatar_picture %}
<img src="{{ userprofile.avatar_picture.url }}" class="card-img-top" alt="...">
{% else %}
<img src="{% static 'placeholder.png' %}" class="card-img-top" alt="...">
{% endif %}
在我的email_confirmation.html中,此图标位于顶部。
{% extends "ui/base.html" %}
{% load i18n %}
{% load account %}
{% block header %}
{% include "ui/loggedin_header.html" %}
{% endblock %}
{% block left %}
<div class="row no-gutters justify-content-start">
{% include 'ui/left_bar_base.html' %}
{% endblock %}
{% block content %}
... allauth template code...
答案 0 :(得分:0)
在整个解决方案中都可以使用
。我的EmailViewExt(ConfirmEmailView)从未被调用。
因此,我没有使用allauths.urls,而是将其放在allauths.urls上方。
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/email/', EmailViewCustom.as_view(), name="email"),
path('accounts/', include('allauth.urls')),
现在,我添加的上下文变量被传递到模板中。因此,我想我必须从allauth中添加所有要替换的URL。