ジャンゴ登録を留める

サイトで登録を締める必要がありました。 django-registration(クラシックdjango再利用可能アプリ)を思い出しました。 最初に驚いたのは、ソースにテンプレートがなかったことです。 インターネットで少し掘り下げて、質問への回答を探し、結果を共有する必要がありました。



一般的に、私は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)








今すべて。 間違えた場合は修正してください。



All Articles