Установка пароля для пользователя Django

#django #postgresql

#django #postgresql

Вопрос:

Я запускаю Django и пытаюсь создать суперпользователя, но я продолжаю получать следующую ошибку всякий раз, когда я пытаюсь выполнить команду passwd или createsuperuser. Я использую Django 1.3 в базе данных PostgreSQL.

 $ python manage.py createsuperuser
...
Traceback (most recent call last):
  File "manage.py", line 19, in <module>
    execute_manager(settings)
  File "/home/stephen/.virtualenvs/s/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/home/stephen/.virtualenvs/s/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/stephen/.virtualenvs/s/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/stephen/.virtualenvs/s/lib/python2.7/site-packages/django/core/management/base.py", line 229, in execute
    self.stdout.write(output)
TypeError: expected a character buffer object
  

Если я попробую passwd, я получу бесполезный stacktrace:

 File "/var/www/envs/s/lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 134, in handle
    User.objects.create_superuser(username, email, password)
  File "/var/www/envs/s/lib/python2.7/site-packages/django/contrib/auth/models.py", line 140, in create_superuser
    u = self.create_user(username, email, password)
  File "/var/www/envs/s/lib/python2.7/site-packages/django/contrib/auth/models.py", line 136, in create_user
    user.save(using=self._db)
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/models/base.py", line 460, in save
    self.save_base(using=using, force_insert=force_insert, force_update=force_update)
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/models/base.py", line 570, in save_base
    created=(not record_exists), raw=raw, using=using)
  File "/var/www/envs/s/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 172, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/var/www/spurfly/master/apps/member/models.py", line 751, in create_profile
    profile, new = UserProfile.objects.get_or_create(user=instance)
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/models/manager.py", line 135, in get_or_create
    return self.get_query_set().get_or_create(**kwargs)
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/models/query.py", line 378, in get_or_create
    return self.get(**lookup), False
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/models/query.py", line 344, in get
    num = len(clone)
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/models/query.py", line 82, in __len__
    self._result_cache = list(self.iterator())
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/models/query.py", line 273, in iterator
    for row in compiler.results_iter():
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 680, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql
    cursor.execute(sql, params)
  File "/var/www/envs/s/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute
    return self.cursor.execute(query, args)
django.db.utils.DatabaseError: current transaction is aborted, commands ignored until end of transaction block
  

Вот мой virtualenv.

 $ pip freeze              
Django==1.3
wsgiref==0.1.2
mimeparse==0.1.3
  

Есть идеи? Спасибо!

Комментарии:

1. То, как я это вижу , вы должны называть это либо так python manage.py createsuperuser , либо вот так python manage.py createsuperuser --username admin . И предполагая, что вы включили django.contrib.auth .

2. Извините, просто опечатка с моей стороны. Я использовал manage.py createsuperuser , команда запрашивает у меня имя пользователя и пароль, но не может их установить.

Ответ №1:

Вы указываете неправильные параметры. Вы должны попробовать:

 python manage.py createsuperuser --username=admin --email=a@dmin.com
  

Также:

https://docs.djangoproject.com/en/1.3/topics/auth/

Комментарии:

1. Попробовал с этими параметрами, он запрашивает у меня пароль для пользователя admin , а затем выдает ошибку типа, упомянутую выше.

2. Итак, что вы вводите для pasword?

3. Я попробовал точные настройки среды с вами, и это работает хорошо. Я думаю, что есть проблема с вашей оболочкой.

4. Кто-нибудь еще узнал, что происходит? Вот что я чувствую сейчас… xkcd.com/979

5. В будущее: Это: code.djangoproject.com/ticket/20856 была моя проблема (и, вероятно, что-то подобное для OP)