5

新しいユーザーを作成するために単純な CreateView を使用したいときに問題があります。すべて問題ありません。ユーザーを作成できますが、新しく作成したユーザーでログを記録したい場合はできません。

管理者でこのタイプのパスワードを取得しました:

パスワード形式が無効であるか、ハッシュ アルゴリズムが不明です。

生のパスワードは保存されないため、このユーザーのパスワードを確認する方法はありませんが、このフォームを使用してパスワードを変更できます。

これは私のコードです:

model.py

from django.db import models
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import AbstractUser, UserManager


    class CustomUser(AbstractUser):
        """app setting of user"""
        url = models.URLField(u'Site URL', max_length=100, null=True, unique=True)

    admin.site.register(CustomUser, UserAdmin)

urls.py

from django.conf.urls.defaults import *
from models import CustomUser
from django.views.generic import CreateView
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse

    urlpatterns = patterns('',
                   url(r'^create_user/$',(CreateView.as_view(model=CustomUser,       get_success_url =lambda: reverse('create_user'),
                                                                             template_name="create_user.html")), name='create_user'),
                   )

create_user.html

<div title="Create Form " id="/create_user">
        <p> <b>Create account:</b> </p>            
        {{ form.errors }}
    <form action="" method="post" id="id_create_user" >
        {% csrf_token %}
        {{ form.as_p }}
        <div>
            <input type="submit" value="Create account" style="">
        </div>

    </form>
</div>

ユーザーを作成した後、管理者としてログインしてこのパスワードを変更する必要があり、その後はすべて問題ありません。私の問題の例

問題を解決するにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

7

問題は、CreateView がモデルに基づいてフォームを自動的に生成していることです。つまり、ユーザーを作成するための正しい API を使用するのではなく、パスワード フィールドに直接書き込みます。

代わりにこのフォームを試してみてください。

from django.contrib.auth.forms import UserCreationForm

urlpatterns = patterns('',
   url(r'^create_user/$',(CreateView.as_view(model=CustomUser, get_success_url =lambda: reverse('create_user'), form_class=UserCreationForm, template_name="create_user.html")), name='create_user'),
)

これらのフォームは基本的に、管理画面に表示されるものと同じものを提供します。これは良い出発点です。カスタム ユーザー モデルを使用している場合は、カスタマイズを行うために追加の作業を行う必要があるかもしれません。

提供された UserCreationForm のソース コードは次のとおりです

通常の ModelForm として自分で再実装できます。含める必要がある重要な点は、user.set_password呼び出される save メソッドです。

于 2013-03-12T14:34:57.597 に答える