首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许用户访问管理面板?

允许用户访问管理面板?
EN

Stack Overflow用户
提问于 2014-11-06 13:02:08
回答 1查看 46关注 0票数 0

请帮助解决这个问题。

我创建了一个表单来注册用户。我需要用户在注册后可以访问管理面板。为此,我尝试重写字段is_staff的值:

代码语言:javascript
复制
class RegistrationForm(UserCreationForm):   
    is_staff = forms.CharField(
        default=True,
        widget=forms.HiddenInput(),
    )   

    class Meta:
        model = User
        fields = (  
            'username',   
            'email',    
            'password1', 
            'password2',
            'is_staff',
        )

视图:

代码语言:javascript
复制
def registration(request):
    """
    ajax refistration procedure
    """ 
    result = False      

    form = RegistrationForm()

    if request.method == 'POST' and request.is_ajax():
        form = RegistrationForm(request.POST)   
        if form.is_valid():
            try:
                new_user = form.save()
            except:
                pass
            else:
                result = True

    data = {
        'result': result,       
    }

    return HttpResponse(json.dumps(data), content_type='application/json')  

问题是浏览器显示以下错误消息:

代码语言:javascript
复制
TypeError at /
__init__() got an unexpected keyword argument 'default' Request Method: GET Request URL:     Django Version:    1.6.8
Exception Type: TypeError Exception Value:  
__init__() got an unexpected keyword argument 'default' Exception Location: /home/kalinins/.virtualenvs/kinopom_project/kinopom_env/local/lib/python2.7/site-packages/django/forms/fields.py
in __init__, line 198
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-06 13:09:15

您得到的错误意味着在创建default=True字段时关键字参数is_staff是不正确的。

您应该使用initial=True而不是指定初始值

此外,您正在为is_staff字段使用一个is_staff字段,该字段应该是一个布尔值(so forms.BooleanField)。在此之后,它将显示为一个勾选框,而不是文本字符的字段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26780180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档