python - auth_user.username 给出 'NoneType' 对象没有属性 '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)
推荐阅读
- android - 如何为我用 Kotlin 编写的自定义 IssueRegistry 解决“过时的自定义 lint 检查”并使其工作(Android)
- java - 比较两个字符串作为日期,并检索月份和年份
- angular - rxjs behaviorsubject 不改变 Ionic 4 视图
- scala - 在 Scala 中返回部分应用的函数
- c# - 如何根据我的系列值获取辅助轴的比例?
- python - python selenium submit 以交互方式工作,但不在脚本中,甚至与 time.sleep
- javascript - 如何从弹出模式中的按钮执行 php 代码?
- javascript - 我如何正确使用字段对数组进行排序
- sql - 如何在 UNION 语句中更改列标题的名称
- javascript - 基于请求中传递的页码处理文档计数的递归逻辑