繁体   English   中英

auth_user.username给出“ NoneType”对象没有属性“ username”

[英]auth_user.username gives 'NoneType' object has no attribute 'username'

所以我试图保存一个sqlform与填写表单的用户一起保存。

db = DAL("sqlite://storage.sqlite")
db.define_table('Pedido',
            Field('Usuario',default=auth.user.username,readable=False, writable=False),
            Field('Nome','string'),
            Field('Telefone', 'string',),
            Field('Email', 'string'),
            Field('CEP','string'),
            Field('Rua', 'string'),
            Field('Tipo_de_cliente',requires=IS_IN_SET(['Cliente Fisico', 'Cliente Juridico'])),
            Field('Tipo_de_servico', requires=IS_IN_SET(['Reparo', 'Ajusto', 'Confecção','Outros'])),
            Field('Tipo_de_peca', requires=IS_IN_SET(['Camisa', 'Jaqueta', 'Saia','Calça','Vestido','Shorts','Camiseta'])),
            Field('Descricao', 'text'),
            Field('Data_de_recebimento_do_pedido','date'),
            Field('Data_de_entrega','date'),
            Field('Valor','double'),
            Field('Tipo_Pagamento',requires=IS_IN_SET(['Dinheiro','Cartão','Cheque'])),
            Field('Pago','boolean'))

与上面的代码只允许我保存表单,如果用户登录,否则它给

'NoneType' object has no attribute 'username'

和我的控制器

@auth.requires_login()
def pedido():
Pedido = SQLFORM(db.Pedido)
Pedido.element('input[type=submit]')['_onclick'] = "return confirm('Deseja salvar?');"
if Pedido.process().accepted:
    response.flash = 'Salvo com sucesso'
return dict(Pedido=Pedido)

我已经四处张望,每一个答案都行不通,有人可以解决此错误吗? 无论我在哪里注销,我都无法再次登录,我必须评论usuario字段,这样我才能再次登录

auth.user是当前登录用户的记录,因此,如果没有用户登录,则为None 。您可以按以下方式更改代码:

Field('Usuario', default=auth.user.username if auth.user else None)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM