web-dev-qa-db-ja.com

Django / adminインターフェースにログインできません

まず、私は初心者です。私はbuntu 11.04に付属していますPython 2.7なのでPython2.5をインストールしました実行する別のディレクトリにGoogle App EngineのDjango-Non-Rel。私はゲストブックチュートリアルを実行しましたが、今管理者アクセスを追加しようとしていますが、正しいユーザー名を入力すると:password Djangoはそれが正しくないと考えています。にデプロイしても機能しませんGAE。わかっている場合は、正しい方向に突き出してください。

追加した:

AUTHENTICATION_BACKENDS = ( 
    'Django.contrib.auth.backends.ModelBackend', 
)

INSTALLED_APPS = (
    ...
    'Django.contrib.admin',
    ....
)

編集する
私も追加しました

url(r '^ admin /'、include(admin.site.urls))、

サブプロジェクトディレクトリのurls.pyに。
EOEDIT

次に、スーパーユーザーと同期データベースを作成しました。

> python2.5 xxx-xxx-guestbook/manage.py createsuperuser python2.5
> xxx-xxx-guestbook/manage.py syncdb

その後、アプリを実行しましたが、ログインできません。私は常に同じ結果で複数の異なるスーパーユーザーを作成しました。

EDIT2

助けてくれてありがとうございましたが、残念ながら提供された解決策のどちらも問題を解決しませんでした。私は最初にDjangoを独力で学び、次にGAE Django-nonrelに切り替える可能性があるため、質問はもう関係ありません。誰かにいくつかのポイントを与えるために1つの回答を選択する必要がありますか?

18
nana

よくわかりませんが、syncdbは作成したスーパーユーザーを削除する可能性があります。 syncdbでプロンプトが表示されたら、スーパーユーザーを作成してみてください。

それ以外の場合は、_./manage.py Shell_の ユーザーモデル を確認してください。 User.objects.all()[0].is_superuserを確認してください。

4
Ken

Django-nonrelにはある種の制限があります。

スーパーユーザーを作成するには:

  • ローカルウェブサーバーを停止します
  • スーパーユーザーを作成する

    python manage.py createsuperuser
    
  • ウェブサーバーを再度実行します

    python manage.py runserver
    

正しいユーザー名とパスワードを持っていると仮定すると、ログインの失敗と同じ動作を示すのはis_staff=False対象のユーザー。

データベースに移動し、auth_userテーブルを調べます。 is_staffは、ログインに使用しているユーザーのTRUEに設定されています。

6
Chris Pratt

Urls.pyのコメントを外す:

# Uncomment the next line to enable the admin:
**# url(r'^admin/', include(admin.site.urls)),**

そしてそれはあなたがレースのためにあなたを良くするはずです:)

PS。 ./manage.py syncdbを実行することを忘れないでください、そしてそれは管理者ユーザーをセットアップするように頼みます。

5
BoGs

私のように馬鹿な人は、ユーザー名ではなくメールでログインしようとしている可能性があります。

スーパーユーザーを作成するときに、ユーザー名ではなく電子メールを入力したことを覚えていたので(Djangoはユーザー名を入力せずに提供するため)、おそらく通常の使用規則のため、ユーザー名のメール..男私は愚かな感じ。

3
GP89

私はあなたと同じ状況にあった。そして、私は認証バックエンドを

someproject.backends.EmailCheckmodelBackend

そしてsettings.pyに行を追加しました:

AUTHENTICATION_BACKENDS =( 'someproject.backends.EmailCheckModelBackend'、)

そしてバックエンドは次のようなものです:

class EmailCheckModelBackend(ModelBackend):
def authenticate(self, username = None, password = None, is_staff = None):
    try:
        user = User.objects.get(email = username)
        if user.check_password(password):
            if is_staff is not None:
                if user.is_staff == is_staff:
                    return user
                else:
                    return None
            return user

    except User.DoesNotExist:
        return None

あなたは実際にユーザー名が「電子メール」によって代替されることを余儀なくされていることがわかります。そのため、メールアカウントでページにログインする必要があります。好きなら

ユーザー名:[email protected]

パスワード:パスワード

その後、動作します。これがすべての人に役立つことを願っています。

2
dotslash

同じ問題があり、すべての設定が正しいためにログインできない理由を理解できませんでした。しかし、私はそれをDjangoまでたどって、最初の大文字を含むスーパーユーザー名を提供しましたが、実際には完全に小文字として名前を保存しています!

(Djangoが提供する)大文字のスーパーユーザー名を自然に使用しましたが、認証に失敗しました。データテーブルを調べて「is_staff」などを確認すると、エラーが見つかりました。セットアッププロセスを数回繰り返し、大文字と小文字などの詳細を確認するためにスーパーユーザーの資格情報をメモしたので、間違いではなかったと思います。

したがって、Djangoが提供するデフォルトの名前を受け入れるときは、道徳に注意する必要があります。嘘だ!

0
Tarquin

修正するのはそれほど難しいことではありません。まず最初に、デフォルト設定を許可してください

(DEBUG=TRUE,ALLOWED_Host=[ ])

ウェブサイトのフォルダの設定ファイルにあります。

Webサイトのフォルダーに移動し(コマンドプロンプトを使用)、次のコマンドを入力します。

$ python manage.py createsuperuser
name:
email:e.g [email protected]
password:

ブラウザに戻ってサーバーを実行します。ユーザー名(電子メールではなく)を、前に作成したパスワードと共に設定します。今回はきっとうまくいきます。

0
leong_geek