私はこれについて2,3日を費やして、ドキュメントを読んで、2つのスクープ情報を読んで、何かを見逃しています。私はAbstractUserにログインするためのビューを作ろうとしています。 AbstractUserモデルはmy_app
にあり、ビューはmainsite
というアプリケーションにあり、プロジェクト全体のビューを保存するために使用します。抽象的なユーザーログインビュー
ユーザーがログインすると、データベースレコードの追加、編集、および削除に使用するクラスベースのビューにアクセスできます。これらのユーザーはスタッフではないため、管理者へのアクセスを許可していません。
ユーザーとしてログインしようとするたびに、authenticate(username, password)
(views.py内)はnoneを返します。
私には何が欠けていますか?ここで
は、セットアップだ - 私はAbstractUserモデルを拡張し、カスタムのPersonモデルを持っている:
# my_app.models.py
class Person(AbstractUser):
date_left = models.DateField(blank=True, null=True)
phone_number = models.IntegerField(blank=True, null=True)
def _full_name(self):
return self.get_full_name()
full_name = property(_full_name)
def __str__(self):
return self.get_full_name()
class Meta:
verbose_name_plural = 'People'
私はsettings.pyのために人を追加しました:
# settings.py
...
AUTH_USER_MODEL = "my_app.Person"
...
私は次のURLconfを持っています:ユーザーで
# project/urls.py
from mainsite.views import login_view
...
url(r'^login/$', login_view, name='login'),
...
このビュー・ログ:
# mainsite.views.py
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return render(request, 'logged_in.html')
else:
return render(request, 'login.html',
{'message': 'Bad username or password'}
)
else:
return render(request, 'login.html')
そして最後に、ここでのログインフィールドを持つテンプレートです:
#templates/login.html
<form action="{% url 'login' %}" method="post">
{% csrf_token %}
<div class="row column"><h1>Login</h1></div>
{% if message %}
<div class="row">
<div class="small-12 medium-6 columns">
<div class="alert callout">
<p>{{ message }}</p>
</div>
</div>
</div>
{% endif %}
<div class="row">
<div class="small-12 medium-6 columns">
<label>Username
<input type="text" id="username" name="username">
</label>
</div>
</div>
<div class="row">
<div class="small-12 medium-6 columns">
<label>Password
<input type="password" id="password" name="password">
</label>
</div>
</div>
<div class="row">
<div class="small-12 medium-6 columns">
<input type="submit" value="Log in" class="button">
</div>
</div>
</form>
どのようにして最初にユーザーを作成しましたか? –
管理者の使用。私は問題を発見した:カスタムのUserCreationFormとUserChangeFormを作成する必要がある。 – acdn