我正在使用Django 1.6和mongoengine。
我刚开始尝试使用简单的验证码,但我遇到以下错误。
正如在http://django-simple-captcha.readthedocs.org/en/latest/usage.html
中所说的那样我安装在我的环境中,添加到已安装的应用程序,我没有运行syncdb,因为我使用MongoDB并且这不是必需的,最后我添加了url(r'^ captcha /',include('captcha.urls ')),进入我的网址应用文件。
我的form.py看起来像:
from django import forms
from captcha.fields import CaptchaField
class PostForm(forms.Form):
user = forms.CharField(max_length=256)
password = forms.CharField(widget=forms.PasswordInput)
email = forms.CharField(max_length=256)
captcha = CaptchaField()
我的观点:
def post_form_upload(request):
if request.method == 'GET':
form = PostForm()
else:
# A POST request: Handle Form Upload
form = PostForm(request.POST) # Bind data from request.POST into a PostForm
# If data is valid, proceeds to create a new post and redirect the user
if form.is_valid():
user = form.cleaned_data['user']
password = form.cleaned_data['password']
email = form.cleaned_data['email']
connect('reborn')
User.create_user(user,password,email)
#return HttpResponse("Usuari nou creat")
return render(request, 'game/welcomeuser.html', {
'user': user,
})
return render(request, 'game/post_form_upload.html', {
'form': form,
})
因此,当表单呈现时,它会给我带来这个错误:
AttributeError at /game/form_upload.html
'DatabaseWrapper' object has no attribute 'Database'
In template /.../post_form_upload.html, error at line 2
'DatabaseWrapper' object has no attribute 'Database'
1 <form action='/game/form_upload.html' method='post'>{% csrf_token %}
2 {{ form.as_p }} <- HERE
3 <input type='submit' value='Submit' />
4 </form>
5
form.as_p有什么问题? 没有这个验证码就好了。
答案 0 :(得分:0)
您需要以其他方式运行syncdb或迁移或创建表captcha_captchastore
,因为它是简单验证码所必需的。
修改强>: 我可能错误地创建了模式,因为你是对的,不是必需的。
但这是一个想法。 Mongoddb引擎使用djangotoolbox,其中djangotoolbox.db.base.NonrelDatabaseWrapper
类没有该属性Database
,直到此commit (line marked)所以请确保您拥有正确的版本。
如果我错了,请告诉我,实际解决方案是什么。