Django-registration部分包含在django中,出现名称错误

0 投票
1 回答
931 浏览
提问于 2025-04-17 12:43

我用pip安装了django-registration,版本是0.7。

然后在

urls.py

from core.forms import UserRegistrationForm

from registration.views import register

urlpatterns = patterns('',

    url(r'^accounts/register/$', register, {'backend': 'registration.backends.default.DefaultBackend','form_class': RegistrationForm}, name='registration_register'),
    (r'^accounts/', include('registration.urls')),

)

core/forms.py

from django import forms
from registration.forms import RegistrationForm
class UserRegistrationForm(RegistrationForm):
    name = forms.CharField()

我得到了(更新

ImportError at /accounts/register/

No module named forms

现在,如果我在命令行里执行:

>>> import registration.forms

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/registration/forms.py", line 9, in <module>
    from django.contrib.auth.models import User
  File "/usr/local/lib/python2.6/dist-packages/django/contrib/auth/models.py", line 7, in <module>
    from django.db import models
  File "/usr/local/lib/python2.6/dist-packages/django/db/__init__.py", line 14, in <module>
    if not settings.DATABASES:
  File "/usr/local/lib/python2.6/dist-packages/django/utils/functional.py", line 276, in __getattr__
    self._setup()
  File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 40, in _setup
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

我就会遇到这个错误。

不过,import registration是没问题的,我在urls.py中使用registration.views.register也没有问题。

我该怎么做才能找到这个问题的原因呢?

更新:感谢@DrTyrsa,我尝试用python manage.py shell

并且import registration.forms可以正常工作,但在我的文件中却不行。

>>> import registration.forms
>>> import core.forms
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/var/www/vhosts/opineo/core/forms.py", line 2, in <module>
    from registration.forms import RegistrationForm
ImportError: No module named forms

我不明白为什么.. registration是用pip安装的,而且它在python路径里。

1 个回答

2

解决办法就是“我真是个傻瓜” :)

在我检查所有东西的时候,我发现我有一个叫做registration的文件夹,里面有一个init.py文件。

这个文件夹覆盖了django-registration的内容;我把它改个名字,错误就消失了。

撰写回答