【问题标题】:Not able to create user profile using django-registration无法使用 django-registration 创建用户配置文件
【发布时间】:2012-11-19 23:34:16
【问题描述】:

我正在使用 django-registration 应用程序。我正在尝试创建一个社交网站。我是网站开发的新手。这是我得到的错误:

环境:

请求方法:POST 请求网址:127.0.0.1:8000/accounts/register/

Django 版本:1.4.2 Python 版本:2.7.2

Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'registration_defaults',
 'django.contrib.admin',
 'registration',
 'polls')
Installed Middleware:
('django.middleware.csrf.CsrfViewMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/Library/Python/2.7/site-packages/registration/views.py" in register
  187.             new_user = backend.register(request, **form.cleaned_data)
File "/Library/Python/2.7/site-packages/registration/backends/default/__init__.py" in register
  79.                                                                     password, site)
File "/Library/Python/2.7/site-packages/django/db/transaction.py" in inner
  209.                 return func(*args, **kwargs)
File "/Library/Python/2.7/site-packages/registration/models.py" in create_inactive_user
  78.         new_user = User.objects.create_user(username, email, password)
File "/Library/Python/2.7/site-packages/django/contrib/auth/models.py" in create_user
  160.         user.save(using=self._db)
File "/Library/Python/2.7/site-packages/django/db/models/base.py" in save
  463.         self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/Library/Python/2.7/site-packages/django/db/models/base.py" in save_base
  565.                 created=(not record_exists), raw=raw, using=using)
File "/Library/Python/2.7/site-packages/django/dispatch/dispatcher.py" in send
  172.             response = receiver(signal=self, sender=sender, **named)
File "/Users/dineshsingh/Desktop/django/mysite/users/models.py" in create_user_profile
  20.         UserProfile.objects.create(user=instance)
File "/Library/Python/2.7/site-packages/django/db/models/manager.py" in create
  137.         return self.get_query_set().create(**kwargs)
File "/Library/Python/2.7/site-packages/django/db/models/query.py" in create
  377.         obj.save(force_insert=True, using=self.db)
File "/Library/Python/2.7/site-packages/django/db/models/base.py" in save
  463.         self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/Library/Python/2.7/site-packages/django/db/models/base.py" in save_base
  551.                 result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/Library/Python/2.7/site-packages/django/db/models/manager.py" in _insert
  203.         return insert_query(self.model, objs, fields, **kwargs)
File "/Library/Python/2.7/site-packages/django/db/models/query.py" in insert_query
  1593.     return query.get_compiler(using=using).execute_sql(return_id)
File "/Library/Python/2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
  910.             cursor.execute(sql, params)
File "/Library/Python/2.7/site-packages/django/db/backends/util.py" in execute
  40.             return self.cursor.execute(sql, params)
File "/Library/Python/2.7/site-packages/django/db/backends/sqlite3/base.py" in execute
  344.             return Database.Cursor.execute(self, query, params)

Exception Type: DatabaseError at /accounts/register/
Exception Value: no such table: users_userprofile

我们将不胜感激。

【问题讨论】:

  • 好吧,做一件事,手动检查你是否在点击syncdb时创建了所有表格。
  • 我已经检查过了,users_userprofile 表没有创建。创建的表列表为:auth_group、auth_group_permissions、auth_permission、auth_user、auth_user_groups、auth_user_user_permissions、django_admin_log、django_content_type、django_session、django_site、polls_choice、polls_poll、registration_registrationprofile、
  • 不不,不会有任何名为users_userprofile 的表。 registration_registrationprofile 是这里的主表。
  • 非常感谢!我正在使用 django-registration-defaults 并且它搞砸了一些事情。我没有以正确的方式做这件事。但是,我关注了您的 devdoodles 链接,并且工作正常。
  • 很高兴知道它对您有用,现在我将其作为答案,以便其他人遇到此问题时可以参考答案。你可以考虑接受right的答案。

标签: django django-registration


【解决方案1】:
According to the Error stack, I think you are doing it in the wrong manner. 
It may be that you are creating an app  named `users` which is not required here. 

这里是如何使用django-registration的分步过程。

安装 django-registration 后,我们需要将其添加到 settings.py 文件中,以确保我们的 django 引擎读取并加载它。

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'registration',     #<--Here I have added
)

现在您需要在settngs.py 文件中添加更多设置:

ACCOUNT_ACTIVATION_DAYS = 2
EMAIL_HOST = 'localhost'
DEFAULT_FROM_EMAIL = 'webmaster@localhost'
LOGIN_REDIRECT_URL = '/'

现在更新urls.py 文件以将所有/accounts/ 请求发送到django-registration 应用程序。

from django.conf.urls.defaults import *
from django.views.generic.simple import direct_to_template
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    ...
    (r'^accounts/', include('registration.urls')),
    ...
)

现在您需要创建一些模板来支持您的django-registration

login.html — user login form
logout.html — shown after a user has logged out
password_change_form.html — password change form
password_change_done.html — shown after successful password change
password_reset_form.html — ask user for email to send password-reset mail to
password_reset_email.html — template for password-reset mail
password_reset_done.html — shown after password-reset email has been sent
password_reset_confirm.html — ask user for new password after reset
password_reset_complete.html — shown after successful password reset
registration_form.html — user registration form
registration_complete.html — shown after a user has registered
activation_email_subject.txt — subject of activation email
activation_email.txt — template for activation email
activate.html — shown after a user has activated his account

您需要放入这些文件的基本模型可以是@the-django-registration-git-hub-link

现在我希望你能让它运行起来。

还有几个链接可以查看。 Link 1 Link 2

【讨论】:

    【解决方案2】:

    您的settings.py 中有正确的AUTH_PROFILE_MODULE 吗?

    应该是这样的:

        AUTH_PROFILE_MODULE = 'registration.RegistrationProfile'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-05
      • 2011-04-15
      • 1970-01-01
      • 2012-07-14
      • 2019-05-23
      • 2021-04-21
      • 2020-07-23
      • 1970-01-01
      相关资源
      最近更新 更多