一般的に、私はdjango-registrationをダウンロードし、ドックとグーグルを読み、接続し始めました:
# setting.py
ACCOUNT_ACTIVATION_DAYS = 2 # -
#
AUTH_USER_EMAIL_UNIQUE = True
EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
DEFAULT_FROM_EMAIL = 'info@google.ru'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'registration', # reusable app
)
# urls.py
urlpatterns = patterns('',
(r'^accounts/', include('registration.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
)
python ./manage.py runserver 8004サーバーを起動し、 http:// localhost:8004 / accounts / register /を開き、/ accounts / register / errorでTemplateDoesNotExistを取得します-テンプレートはありません。 そのため、 テンプレート/登録にテンプレートを作成します。
# templates/registration/registration_form.html
{% extends "base.html" %}
{% block content %}
<h1></h1>
<form method="post" action="">
<dl class="register">
{% for field in form %}
<dt>{{ field.label_tag }}</dt>
<dd class="clearfix">{{ field }}
{% if field.help_text %}<div class="clearfix">{{ field.help_text }}</div>{% endif %}
{% if field.errors %}<div class="myerrors clearfix">{{ field.errors }}</div>{% endif %}
</dd>
{% endfor %}
</dl>
<input type="submit" value="" / class="clearfix">
</form>
{% endblock %}
結果は登録フォームでした。 フィールドにロシア語の名前を付けるには、 setting.pyに登録することを忘れないでください
LANGUAGE_CODE = 'ru-RU' #
USE_I18N = True # -
登録を完了するには、 python ./manage.py syncdbデータベースを同期する必要があります ( registration_registrationprofileテーブルが作成されます)。 また、デフォルトでは、django-registrationは新規ユーザーの電子メールの一意性をチェックしません。 これを修正するには、 registration / views.pyファイルで、次を変更します。
"""
# RegistrationForm
# RegistrationFormUniqueEmail
def register(request, success_url=None,
#form_class=RegistrationForm,
form_class=RegistrationFormUniqueEmail,
profile_callback=None,
template_name='registration/registration_form.html',
extra_context=None):
ただし、 コメントでlizendirが正しく修正されているため、ライブラリコードの編集は不適切です。 registration.urlsに接続する前に、このタイプのurl()をurls.pyに追加することをお勧めします。
url(r'^register/$', 'registration.views.register', {'form': RegistrationFormUniqueEmail}, name='registration_register'),
url('', include('registration.urls')),
最小限の十分な機能のために、 templates / registration /にさらにいくつかのファイルを作成する必要があります。
# -
# activation_email_subject.txt
– {{ site }}
#
# activation_email.txt
:
{{ site }}/accounts/activate/{{ activation_key }}/
!
#
# registration_complete.html
{% extends "base.html" %}
{% block content %}
<h1> </h1>
. e-mail
. ,
.<br/><br/>
{% endblock %}
#
# activate.html
{% extends "base.html" %}
{% block content %}
<h1></h1>
, {{ account }}!<br/>
. <a href="{% url auth_login %}"></a> .
<br/><br/>
{% endblock %}
ただし、登録を成功させるには、テストメールサーバーを作成する必要があります。テストメールサーバーでは、テキストとアクティベーションコードが記載された手紙が送信されます。 幸いなことに、Pythonには簡単な解決策があります-コマンドラインを入力するだけです:
python -m smtpd -n -c DebuggingServer localhost:1025
ターミナルを開いたままにして、追加のターミナルウィンドウでdjangoサーバーを起動し、 http:// localhost:8004 / accounts / register /に移動して登録します。 メールデバッガーでは、quoted-printableエンコーディングの文字のテキストが表示されます。 ただし、 example.com / accounts / activate / b3842d8f0b08a548a0372de9e79b6bd909bf8e6e /のような行をコピーして貼り付け、localhost:8004に追加するだけです。 http:// localhost:8004 / accounts / activate / b3842d8f0b08a548a0372de9e79b6bd909bf8e6e / 。 アカウントにアクセスしてアクティブにします。 登録が完了しました。 やった!
承認のために、login.htmlとlogout.htmlの2つのテンプレートがさらに必要です。
# templates/registration/login.html
{% extends "base.html" %}
{% block content %}
<h1></h1>
{% if user.is_authenticated %}
, {{ user.username }}? .
, <a href="{% url auth_logout %}"></a>.<br/><br/>
{% else %}
{% if form.non_field_errors %}
{{ form.non_field_errors }}
{% endif %}
<form method="post" action="">
<dl class="register">
{% for field in form %}
<dt>{{ field.label_tag }}</dt>
<dd class="clearfix">{{ field }}
{% if field.help_text %}<div class="clearfix">{{ field.help_text }}</div>{% endif %}
{% if field.errors %}<div class="myerrors clearfix">{{ field.errors }}</div>{% endif %}
</dd>
{% endfor %}
</dl>
<input type="submit" value="" / class="clearfix">
</form>
<script type="text/javascript">
document.getElementById('id_username').focus()
</script>
<br/><br/>
<ul>
<li><a href="{% url auth_password_reset %}"> ?</a></li>
<li><a href="{% url registration_register %}"></a></li>
</ul>
{% endif %}
{% endblock %}
# templates/registration/logout.html
{% extends "base.html" %}
{% block content %}
<h1></h1>
, . .<br/><br/>
{% endblock %}
もちろん、これだけではありません-registration / urls.pyには、忘れたパスワードを送信してリセットするためのURLがあります。 ただし、最小限の機能で十分です。 唯一のことは、django管理者がデフォルトでユーザーがアクティベートされているかどうかを表示しないことです。 修正してください。 新しいアプリケーションdjango-admin.py startapp customuseradminを作成し、django.contrib.adminの後にINSTALLED_APPSに記述し、 customuseradmin / admin.pyに次のように記述します。
# -*- coding:utf-8 -*-
from django.contrib import admin
from django.contrib.auth.models import User, Group
from django.contrib.auth.admin import UserAdmin
admin.site.unregister(User)
class CustomUserAdmin(UserAdmin):
list_display = ('username', 'email', 'is_staff','is_active',)
list_filter = ('is_staff', 'is_superuser', 'is_active',)
admin.site.register(User, CustomUserAdmin)
今すべて。 間違えた場合は修正してください。