【问题标题】:Django Simple Captcha - Error in {{ form.as_p }} - 'DatabaseWrapper' object has no attribute 'Database'Django Simple Captcha - {{ form.as_p }} 中的错误 - “DatabaseWrapper”对象没有属性“Database”
【发布时间】:2014-06-15 02:47:13
【问题描述】:

我正在使用 Django 1.6 和 mongoengine。

我刚开始尝试简单的验证码,但出现以下错误。

正如http://django-simple-captcha.readthedocs.org/en/latest/usage.html中所说的

我安装在我的环境中,添加到已安装的应用程序中,我没有运行 syncdb,因为我使用 MongoDB,这不是必需的,最后我添加了 url(r'^captcha/', include('captcha.urls ')),进入我的 url 应用文件。

我的 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 有什么问题? 没有这个验证码运行良好。

【问题讨论】:

  • 你跑过./manage.py migrate./manage.py syncdb吗?
  • 我没有,问题里有解释。

标签: python django captcha simplecaptcha


【解决方案1】:

您需要运行 syncdb 或以其他方式迁移或创建表 captcha_captchastore,因为它是简单验证码所必需的。

编辑: 我可能在创建架构方面错了,因为您是对的,不需要它。

但这是一个想法。 Mongoddb 引擎使用 djangotoolbox 其类 djangotoolbox.db.base.NonrelDatabaseWrapper 没有该属性 Database 直到这个 commit (line marked) 所以确保你得到正确的版本。

如果我错了,请告诉我实际的解决方案是什么。

【讨论】:

猜你喜欢
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 2017-01-22
  • 2021-02-14
相关资源
最近更新 更多