【问题标题】:In django-registration i am not getting any confirmation link?在 django-registration 我没有得到任何确认链接?
【发布时间】:2014-09-02 23:12:20
【问题描述】:

实际上,当我使用用户名注册时,它会重定向到注册完成页面。但是当我使用该用户名登录时,它会引发表单错误。因此,当我使用创建的用户名登录时,它会显示

“您的用户名和密码不匹配,请重试”

(我写它是为了在 login.html 中显示 form.errors)

login.html

{% extends "base.html" %}

{% block content %}

{% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}

<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
<table>
<tr>
<td>{{ form.username.label_tag }}</td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td>{{ form.password.label_tag }}</td>
<td>{{ form.password }}</td>
</tr>
</table>

<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>

{% endblock %}

registration.html

<html>
<head>
  <title>Register</title>
</head>   

<body>
  <h2>Register</h2>
  <form action="/accounts/register/" method="POST">{% csrf_token %}
     <table>
        {{form.as_table}}
     </table>

  <p>
     <input type="submit" value="Submit">
  </p>
  </form>   
</body>
</html>

urls.py

enter code here
from django.conf.urls import patterns, include, url
from frm.views import main,forum,thread
from frm.views import reply,new_thread,profile,post
from django.conf import settings
from django.contrib import admin
from django.conf.urls import *
from django.contrib.auth.views import login
admin.autodiscover()

urlpatterns = patterns('',
url(r'^$',main),
url(r'^forum/(?P<pk>\w+)/$',forum  ),
url(r'^thread/(?P<pk>\w+)/$',thread ),
url(r'^post/(new_thread|reply)/(\d+)',post),
url(r'^new_thread/(\d+)/$',new_thread),
url(r'^reply/(\d+)/$',reply),
url(r'^profile/(?P<pk>\w+)/$',profile),

# Examples:
# url(r'^$', 'forum.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^accounts/',include('registration.backends.default.urls')),

url(r'^admin/', include(admin.site.urls)),
)

【问题讨论】:

  • 您好,欢迎来到 SO。请详细说明您在注册过程中采取的每个步骤,然后发布您遇到的确切错误。尝试从您看到的错误中找出错误在您的代码中的位置并发布该代码。
  • 谢谢。我已经更新了问题。

标签: django django-templates django-admin


【解决方案1】:

您可以通过多种方式访问​​模板中的错误。尝试改变:

{% if form.errors %}
  <p>Your username and password didn't match. Please try again.</p>
{% endif %}

到:

{% if form.errors %}
  {{ form.errors }}
  <br /><br />

  {% if form.non_field_errors %}
    {% for error in form.non_field_errors %}
      {{ error }}
    {% endfor %}

    <br /><br />
    a nicer way:<br />
    {{ form.non_field_errors.as_ul }}

  {% endif %}

  <br /><br />
  form username errors:<br />
  {{ form.username.errors }}

  <br /><br />
  form password errors:<br />
  {{ form.password.errors }}
{% endif %}

这是一个好的开始。您还需要向访问者显示错误。将您的 label_tags 更改为

&lt;td&gt;{{form.username.errors }}&lt;br /&gt;{{ form.username.label_tag }}&lt;/td&gt;

&lt;td&gt;{{form.password.errors }}&lt;br /&gt;{{ form.password.label_tag }}&lt;/td&gt;

【讨论】:

  • 没关系,但如何确认该用户?这是我的问题。
  • 任何数量的错误都会抛出该消息。你需要看看实际的错误是什么。
  • 在我的模板中使用它后,它显示此帐户处于非活动状态。这就是我想知道的如何激活我的帐户?
  • 这超出了您原始问题的范围。通过电子邮件发送用户链接以单击以确认注册来完成激活。你检查过你的电子邮件吗?如果在开发中,并且您的开发环境不发送电子邮件,则需要访问数据库中的用户并将is_active 切换为true。
  • 好吧.. 抱歉,如果我的问题没有说明我在问什么。那么你能告诉我如何手动激活用户,因为它正在开发中
猜你喜欢
  • 1970-01-01
  • 2018-11-18
  • 2019-01-02
  • 2014-02-11
  • 1970-01-01
  • 2017-01-26
  • 2021-10-19
  • 2023-04-01
  • 2018-05-30
相关资源
最近更新 更多