【问题标题】:Django 2 Allauth email confirmation redirects to empty pageDjango 2 Allauth 电子邮件确认重定向到空白页面
【发布时间】:2019-07-31 22:43:14
【问题描述】:

我正在尝试设置 allauth,至少可以说是具有挑战性的。

我的注册页面正常工作(尽管username 字段拒绝出现在表单上)并且在提交时,将用户重定向到一个空白页面,其中标有Check your email to confirm account

邮件说

To confirm this is correct, go to http://localhost:8000/users/verify-email/Ng:1h2xx7:z9x0t0wmvAhicak5twI_QtVWNYo

当我点击链接时,页面是空的(虽然仍然是我base.html的样式,但没有内容。)

我假设它应该指向登录页面并显示横幅 Account confirmed, you may now log in.

有人可以告诉我为什么会这样吗?

我应该知道电子邮件确认后的页面是否有 view.py 类?

urls.py

from django.contrib.auth import views as auth_views
from users import views as user_views
from allauth.account.views import confirm_email

urlpatterns = [
    path('register', user_views.MySignupView.as_view(template_name='users/register.html'), name='register'),
    path('login', user_views.MyLoginView.as_view(template_name='users/login.html'), name='login'),
    path('verify-email/<str:key>',
    confirm_email,
    name='account_confirm_email'),

views.py

from allauth.account.views import SignupView, LoginView

class MySignupView(SignupView):
    template_name = 'users/register.html'

class MyLoginView(LoginView):
    template_name = 'users/login.html'

forms.py

class UserRegisterForm(forms.Form):
    email = forms.EmailField()
    first_name = forms.CharField(required=True)
    last_name = forms.CharField(required=True)

    def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.save()

settings.py

ACCOUNT_SIGNUP_FORM_CLASS = 'users.forms.UserRegisterForm'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS=7
ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 # 1 day in seconds

【问题讨论】:

  • 检查您的项目文件夹中是否有templates/account/email_confirm.html
  • 不,我没有那个文件夹,我现在添加了它,它显示一个完全空白的页面。我暂时从我的login 页面复制了我的代码,但这就是答案吗?只需设置该页面的样式以感谢您确认您的电子邮件,然后有一个链接将他们引导到登录页面?以及如何验证电子邮件是否真正得到确认?
  • 这个模板应该叫做:github.com/pennersr/django-allauth/blob/master/allauth/… 你可以试着把它复制过来看看是否有帮助。无论哪种方式,似乎都调用了某些东西,因为您没有收到未找到模板的错误
  • 是的,我只是不知道叫什么...奇怪的是,当我将该模板粘贴到 email_confirm.html 时,空页面重新出现
  • 检查生成的 html,或许可以为您提供线索。另外我建议你安装github.com/django-debug-toolbar/django-debug-toolbar

标签: django django-views django-allauth


【解决方案1】:

原来我使用的是{% block body %} 而不是{% block content %},所以这就是页面样式但为空的原因。

【讨论】:

    猜你喜欢
    • 2016-07-02
    • 1970-01-01
    • 2017-05-12
    • 2023-03-25
    • 1970-01-01
    • 2014-07-30
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多