まず、私は初心者です。私は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つの回答を選択する必要がありますか?
よくわかりませんが、syncdbは作成したスーパーユーザーを削除する可能性があります。 syncdbでプロンプトが表示されたら、スーパーユーザーを作成してみてください。
それ以外の場合は、_./manage.py Shell
_の ユーザーモデル を確認してください。 User.objects.all()[0].is_superuser
を確認してください。
Django-nonrelにはある種の制限があります。
スーパーユーザーを作成するには:
スーパーユーザーを作成する
python manage.py createsuperuser
ウェブサーバーを再度実行します
python manage.py runserver
正しいユーザー名とパスワードを持っていると仮定すると、ログインの失敗と同じ動作を示すのはis_staff=False
対象のユーザー。
データベースに移動し、auth_userテーブルを調べます。 is_staff
は、ログインに使用しているユーザーのTRUE
に設定されています。
Urls.pyのコメントを外す:
# Uncomment the next line to enable the admin:
**# url(r'^admin/', include(admin.site.urls)),**
そしてそれはあなたがレースのためにあなたを良くするはずです:)
PS。 ./manage.py syncdbを実行することを忘れないでください、そしてそれは管理者ユーザーをセットアップするように頼みます。
私のように馬鹿な人は、ユーザー名ではなくメールでログインしようとしている可能性があります。
スーパーユーザーを作成するときに、ユーザー名ではなく電子メールを入力したことを覚えていたので(Djangoはユーザー名を入力せずに提供するため)、おそらく通常の使用規則のため、ユーザー名のメール..男私は愚かな感じ。
私はあなたと同じ状況にあった。そして、私は認証バックエンドを
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]
パスワード:パスワード
その後、動作します。これがすべての人に役立つことを願っています。
同じ問題があり、すべての設定が正しいためにログインできない理由を理解できませんでした。しかし、私はそれをDjangoまでたどって、最初の大文字を含むスーパーユーザー名を提供しましたが、実際には完全に小文字として名前を保存しています!
(Djangoが提供する)大文字のスーパーユーザー名を自然に使用しましたが、認証に失敗しました。データテーブルを調べて「is_staff」などを確認すると、エラーが見つかりました。セットアッププロセスを数回繰り返し、大文字と小文字などの詳細を確認するためにスーパーユーザーの資格情報をメモしたので、間違いではなかったと思います。
したがって、Djangoが提供するデフォルトの名前を受け入れるときは、道徳に注意する必要があります。嘘だ!
修正するのはそれほど難しいことではありません。まず最初に、デフォルト設定を許可してください
(DEBUG=TRUE,ALLOWED_Host=[ ])
ウェブサイトのフォルダの設定ファイルにあります。
Webサイトのフォルダーに移動し(コマンドプロンプトを使用)、次のコマンドを入力します。
$ python manage.py createsuperuser
name:
email:e.g [email protected]
password:
ブラウザに戻ってサーバーを実行します。ユーザー名(電子メールではなく)を、前に作成したパスワードと共に設定します。今回はきっとうまくいきます。