2009-12-14 3 views
0

Я пытаюсь добавить поле ReCaptcha моей регистрационной форме и следовал Маркос руководство:Джанго-регистрационная форма таможенного оформления (Recaptcha поле)

http://www.marcofucci.com/tumblelog/26/jul/2009/integrating-recaptcha-with-django/

В моей регистрации приложения, у меня есть файл «формы. ру», который выглядит следующим образом:

from recaptcha import fields as captcha_field 
from registration.forms import RegistrationFormUniqueEmail 

class RecaptchaRegistrationForm(RegistrationFormUniqueEmail): 
    recaptcha = captcha_field.ReCaptchaField() 

и urls.py, который получает включены в/счета моего решения широкого urls.py:

from django.conf.urls.defaults import * 
from registration.views import register 
from forms import RecaptchaRegistrationForm 
urlpatterns = patterns('users.views', 
         (r'^$', 'profile'), 
         url(r'^register/$', register, {'form_class': RecaptchaRegistrationForm}, name='registration_register'), 
        ) 

Теперь, когда я иду к/счета/регистрация/я получаю сообщение об ошибке:

Exception Value: register() takes at least 2 non-keyword arguments (1 given)

Я понятия не имею, почему.

+0

Можете ли вы показать код для представления 'register'? –

+1

Код для просмотров django-регистрации находится здесь: http://bitbucket.org/ubernostrum/django-registration/src/tip/registration/views.py – Kai

ответ

0

«Бэкэнд» не является необязательным аргументом. Можете ли вы приложить трассировку стека вашего исключения? Кажется, он пытается использовать DefaultBackend как строку.

+0

Traceback: Файл «/usr/lib/pymodules/python2.6/django/core/handlers/base.py» в get_response 92. response = callback (запрос, * callback_args, ** callback_kwargs) Файл «/usr/local/lib/python2.6/dist-packages/registration/views.py» в регистре 178. backend = get_backend (backend) Файл «/ usr /local/lib/python2.6/dist-packages/registration/backends/__init__.py "в get_backend 22. i = path.rfind ('.') Тип исключения: AttributeError at/accounts/register/ Значение исключения: тип объекта' DefaultBackend 'не имеет атрибута' rfind ' – Kai

+0

Ну, я попробовал:' backend ':' registration.backends.default.DefaultBackend 'и там больше не является сообщением об ошибке, но в то же время я тоже не получаю ответное поле. – Kai

+0

3 возможности: 1 - вы не указали аргумент 'form_class' (если не указано, это будет извлечено из бэкэнда регистрации.) 2 - вы не показываете свою форму с помощью {{form}} (или {{form_as_p}}) 3 - у вас есть некоторые проблемы с конфигурацией recaptcha. В этом случае попробуйте создать форму с помощью оболочки python и распечатать ее. Вы должны увидеть ошибку, если что-то не настроено должным образом. –

2

Первый не-ключевой аргумент, который он запрашивает, является запросом, который автоматически получает.

Второй не ключевой аргумент, который он не получает, является authentication backend.

Чтобы быстро перейти, вы можете просто использовать default backend, который поставляется с регистрацией django. Я не могу легко проверить это сам, но это должно сделать это:

from django.conf.urls.defaults import * 
from registration.views import register 
from forms import RecaptchaRegistrationForm 
from registration.backends.default import DefaultBackend 
urlpatterns = patterns('trackerbase.users.views', 
         (r'^$', 'profile'), 
         url(r'^register/$', register, { 
         'backend': DefaultBackend, 
         'form_class': RecaptchaRegistrationForm, 
         }, name='registration_register'), 
         ) 

Посмотрите на файл вы ссылаетесь на starting at line 95. Чтение этого должно рассказать вам все, что вам нужно знать.

+0

Я пробовал это раньше, он не работает. Я получаю эту ошибку: > Значение исключения: тип объекта 'DefaultBackend' не имеет атрибута 'rfind' Из-за этого и потому, что он говорит, что бэкенд является необязательным аргументом, я думал, что это просто неправильный способ получить его и не упоминал об этом в моем вопросе. – Kai

+0

Попробуйте «backend»: 'registration.backends.default.DefaultBackend'. – luc

+0

Я всегда получаю ошибку в этой строке, когда я пытаюсь реализовать капчу из того же блога marcofucci от registration.forms import RegistrationForm, а также от просмотров. Я пошел в оболочку python, и я не получаю это предупреждение, пожалуйста, помогите мне – vkrams

0

Вы можете использовать recaptcha-client, для пошаговой процедуры вы можете руководствоваться k0001's блог это работает из коробки.

Смежные вопросы