2017-05-17 5 views
-1

私はDjangoを1週間学習しています。認証システムを実装するために、models.pyファイルをチュートリアルとして作成しました。Django 1.8では、 "USERNAME_FIELD"は認証システムによって何を意味していますか?

from django.db import models 
from django.contrib.auth.models import AbstractBaseUser 

class User(AbstractBaseUser): 

    username = models.CharField('username', max_length = 10, unique = True, db_index = True) 
    email = models.EmailField('email address', unique = True) 
    joined = models.DateTimeField(auto_now_add = True) 
    is_active = models.BoolenField(default = True) 
    is_admin = models.BoolenField(default = False) 

    USERNAME_FIELD = 'username' 
    def __unicode__(self): 
     return self.username 

私は何、ユーザー名、電子メール、入社、is_active、手段is_admin、私はUSERNAME_FIELDを使用する理由私は理解できないと理解しています。

models.CharField 'ユーザ名'でUSERNAME_FIELDに等しいによって作成ですか?

なぜ私は作成する必要がありますUSERNAME_FIELD

何ですかdef __unicode __(自己):機能はどういう意味ですか?

答えて

2

docsによれば、USERNAME_FIELDは:

一意の識別子として使用されているユーザモデルにフィールドの名前を示す文字列。これは通常、ある種のユーザー名ですが、電子メールアドレスやその他の一意の識別子でもあります。一意でないユーザー名をサポートできるカスタム認証バックエンドを使用しない限り、フィールドは一意である必要があります(つまり、その定義に一意= Trueを設定する必要があります)。

したがって、USERNAME_FIELDは、どのモデルフィールドがユーザー名として使用されるかを指定します。アプリケーションでユーザー名の代わりに電子メールアドレスが使用されている場合は、USERNAME_FIELDを使用して設定します。

__unicode__(self)メソッドは、オブジェクトの文字列表現を返します。それがなければ、オブジェクトを表示しようとするたびに<User: User object>のようになります。今のように、Userオブジェクトを表示すると、代わりにUserのユーザー名が表示されます。Djangoのチュートリアルpart 2では、彼らはそれが__str__は、あなたの助けのためのPythonで__unicode__ 2.

+0

ありがとうございます。あなたは私にForeignKeyを教えてくれますか?私はForeignKeyが正確に何を意味するのか理解できません。 –

+1

外部キーは、テーブル内の行への参照です。 2行をリンクする方法です。ここに役立つ質問があります:http://stackoverflow.com/questions/655446/what-exactly-is-a-foreign-key – FamousJameous

1

チェックジャンゴのバージョンにdocumentation

USERNAME_FIELD

一意の識別子として使用されているUserモデルにフィールドの名前を表す文字列。これは通常、ある種類のユーザ名 ですが、電子メールアドレス、またはその他の一意の 識別子であってもかまいません。フィールドは、が一意である必要があります(つまり、ユニーク=真を に設定してください)。

USERNAME_FIELDデフォルトは"username"です。デフォルトの場合はカスタムユーザーモデルで設定することはできません。

__str__()__unicode__()の方法hereを読むことができます。

+0

感謝の同等であるPythonの3ではPythonの2を動作させるために@python_2_unicode_compatibleデコレータと一緒に__str__メソッドを使用します。もっと正確に説明しますか?あなたのおもてなしに感謝します。 –

+1

@Yuiry:ドキュメントへのリンクを確認します。 –

関連する問題