'str' object has no attribute 'get'咋解决?

本人学医,凭兴趣自学python,真心不易,现在遇到一个问题:在写一个简单的注册提交页面,是想通过class将数据存储到本地的txt文件,在输入username和password,submit到register/add时,但遇到了下面的问题:

图片说明

请各位大神帮助看是什么问题。

下面是源代码,看看还有没有其他什么问题。谢谢!

app.py

 from flask import (
    Flask,
    render_template,
    request,
    redirect,
)

from Models import (Users, Requirements)
import time
import os

app = Flask(__name__)

@app.route('/', methods=['GET'])
def index():
    return render_template('/index.html')


@app.route('/login')
def login():
    return render_template('/login.html')


@app.route('/register')
def register():
    return render_template('/register.html')


@app.route('/register/add', methods=['POST'])
def register_add():

    if request.method == 'POST':
        form = request.form
        print('打印', form)
        u = Users.new(form)
        u.save()

    return redirect('/login')


@app.route('/post', methods=['GET'])
def post_message():
    return render_template('/post.html')


@app.route('/post/add', methods=['POST'])
def post_add():

    if request.method == 'POST':
        form = request.form
        u = Requirements(form)
                u = Requirements.new(form)
        u.save()

    return redirect('/post')


if __name__ == '__main__':
    config = dict(
        debug=True,
        host='0.0.0.0',
        port=2000,
    )
    app.run(**config)

Model.py

 from random import Random
import json
import os


def save(data, path):

    m = json.dumps(data, ensure_ascii=False)
    # path = os.path.dirname(__file__)
    with open(path, 'a+') as f:
        f.read()
        f.write(m + '\n')
        f.close()


def load(path):
    with open(path, 'r', encoding='utf-8') as f:
        s = f.read()
        m = json.dumps(s, ensure_ascii=False)
        print('加载', type(m), m)
        t = json.loads(m)
        print('加载', type(t), t)
        return t


def random_str(randomlength=16):
    s = ''
    chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
    length = len(chars) - 1
    random = Random()
    for i in range(randomlength):
        s += chars[random.randint(0, length)]
    return s


class Model(object):

    @classmethod
    def db_path(cls):
        root = os.path.dirname(__file__)
        classname = cls.__name__
        path = '{}/data/{}.txt'.format(root, classname)
        return path


    @classmethod
    def all(cls):
        """
        all 方法(类里面的函数叫方法)使用 load 函数得到所有的 models
        """
        path = cls.db_path()
        models = load(path)
        ms = [cls.new(m) for m in models]
        return ms

    @classmethod
    def new(cls, form):
        m = cls(form)
        return m


    def save(self):
        models = self.all()
        path = self.db_path()
        l = [m.__dict__ for m in models]
        save(l, path)


class Users(Model):
    def __init__(self, form):
        self.id = random_str()
        self.username = form.get('username', '')
        self.password = form.get('password', '')


class Requirements(Model):
    def __init__(self, form):
        self.id = form.get('id', None)
        self.province = form.get('province', '')
        self.city = form.get('city', '')
        self.post_content = form.get('post_content', '')
        self.contact_requirement_method = form.get('contact_requirement_method', '')

最后搞定了,采取了下面这种方式,然后有修改了Model部分内容

    if request.method == 'POST':
        formdata = request.form
        form = formdata.to_dict()
        u = Users.new(form)
        u.save()

0

9个回答

1.获取客户端提交的表达数据,数据类型为ImmutableMultiDict
formData = request.form
2.将提取的数据转化成字典
formDict = formData.to_dict()
3.提取客户端提交的json字符串
dataJsonString = formDict.keys()[0]
4.将json字符串序列化成字典
dataDict = eval(dataJsonString)

这么干!

0
qq_34990646
在路上挥霍 搞定后希望能给下分
一年多之前 回复

调试下,你的form是什么类型,是不是字符串了。你的请求怎么写的。

0
kickfick123
kickfick123 是字符串: 打印 ImmutableMultiDict([('username', '11111'), ('password', '22222')]) 加载 <class 'str'> "[]\n" 加载 <class 'str'> []
一年多之前 回复
kickfick123
kickfick123 <form action="/register/add" method="post"> <input type="text" name="username" placeholder="请输入用户名"> <br> <input type="text" name="password" placeholder="请输入密码"> <br> <input type="submit">
一年多之前 回复
kickfick123
kickfick123 是这么写的 :
一年多之前 回复

导入String包试试

0

你的问题出现是由这句代码导致:u = Users.new(form)

Python实例化对象不需要使用.new 直接 u = User(form)

0
kickfick123
kickfick123 试了,好像不行
一年多之前 回复

调用str.get之前看看str是不是null了

0

你应该吧这个字符串转换成dict,然后才能get

0

仔细看告警信息,form变量被当作string字符串了,仔细调试下,看看form在哪里被赋值了

0

字段初始化错误,没有定义类型

0

很可能没有获取这这str,是一个null 值,null值没有这个属性,所以这边报错了

-2
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python django编程错误提示,自己编程中遇到的错误总结2018年11月8日更新
本人也是初学Python和django,因此可以说是天天会遇到各种各样自己不知道或者没见过的错误。之前的时候,并没有把所有遇到的问题,收集整理起来分享给大家。但是还是希望,从现在将自己平时学习中遇到的问题分享给大家做一些参考。也许有些是正确也许是错误。也欢迎大家一起来评论交流!!!此文章本人会陆陆续续的不断进行更新和补充完善,一起加油~~~~~~~ 1.AttributeError(“'str'...
Django2.1.2创建工程后进入admin站点管理的时候报了:WSGIRequest' object has no attribute 'user 的错误
查stackoverflow和CSDN,这是由于Django版本的问题,在1.10之前,中间件的key为MIDDLEWARE_CLASSES;在1.10之后,中间件的key为MIDDLEWARE。 项目的初始配置: MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'dj...
Python学习(3)—— 基本数据类型一:数字类型
基本数据类型一:数字类型
pytorch低版本加载高版本pytorch训练得到的模型,出现‘module’ object has no attribute ‘_rebuild_tensor_v2’错误
情景 使用pytorch0.3来加载Mobilenetv1的模型(用更高版本的pytorch训练得到的),出现“AttributeError: ‘module’ object has no attribute ‘_rebuild_tensor_v2’”错误。 分析 追根溯源,查看pytorch的源码,torch下__init__.py定义了__all__ = [**, ‘load’, **],然后...
python3大作战之encode与decode讲解
大家好,很久没更新了,也是年底了最近比较忙,同时也在研究python的其他内容,毕竟是python小白,自学道路艰难。 好了今天和大家一起探讨下python3编码过程中对的一些转码事宜。 python3中对文本和二进制做了比较清晰的区分。python3默认编码为unicode,由str类型进行表示。二进制数据使用byte类型表示,所以不会将str和byte混在一起。在实际应用中我们经常需要将两
python打包exe问题
python打包exe问题 使用pyinstaller打包成exe时发现一个问题,AttributeError: ‘str’ object has no attribute ‘items’,开始以为是哪个import的包有问题,挨个卸载试了也不行,最终发现不是import包的问题,而是pyinstaller的问题,上网查到https://blog.csdn.net/m0_37876745/arti...
Python报错:'dict' object has no attribute 'iteritems'(机器学习实战kNN代码)解决方案
报错信息 学习《机器学习实战》这本书时,按照书上的代码运行,一直有错误:产生错误的代码如下: sortedClassCount = sorted(classCount.iteritems(),key = operator.itemgetter(1), reverse = True) #排序 报错如下: 报错信息 仔细检查了好多遍,还是没有找到问题所在,所以上网查了相关资料,...
python自然语言处理学习笔记三
第三章 处理原始文本   1 从网络和硬盘访问文本 #>的英文翻译 未作测试?? From utlib import urlopen Url=’http://www.gutenberg.org/files/2554/2554.txt’ Raw=urlopen(url).read() Type(raw) Len(raw) Raw[:75]   #分词 未作测试?? Token
机器学习实战——决策树Python实现问题记录
问题:NameError: name 'reload' is not defined import imp import trees imp.reload(trees) 结论:已经导入过的模块才能用reload, reload的参数应该是模块名,而不是文件名。在pyhton3.x中要先导入文件和imp模块,才能用imp.reload() 问题:关于Plot图像不显示中文文字问题 原因是标...
python常见问题集合
1.urllib.error.URLError . certificate verify failed: unable to get local issue 是python2.79以后版本的原因 https链接不是从签发机构买的 所以失败了,加一句ssl._create_default_https_context = ssl._create_unverified_context 就可以 2.P...
记录 python 编程中遇到的错误
  1. 记录一个粗心大意导致的错误:'DataFrame' object has no attribute 'piovt' 原因是拼写错误,正确的应该是 pivot df.pivot('A','B','C') 要注意细节   2.index=pd.date_range('11/13/2018',period=1000) 出错: TypeError: __new__() got an...
Tersorflow深度学习入门—— CIFAR-10 训练示例报错及解决方案
Tersorflow深度学习入门—— CIFAR-10 训练示例报错及解决方案, CNN图像分类与识别
编译CTPN过程总结
CTPN搭建步骤(仅CPU版Linux)主要参考了几位大神的博客,然后整理总结了一些。系统环境:Ubuntu 14.04一.  安装TensorFlow(Python版本为2.7)1.     首先通过命令安装pip和virtualenv:2.    使用命令创建virtualenv环境:(其中的targetDirectory是自己命名的一个空间,这里设置为~/tensorflow)3.    使...
django 出现的错误
在做图片上传的时候出现了一个错误,具体描述如下: 在windows 下我可以上传,但是将django部署在apache时就显示permission deny。OSError at /img/ ,将目录的权限放通后还是不行。最后在setting中添加 MEDIA_ROOT = ‘/HOME/L/MEDIA’ MEDIA_ROOT_URL =’/MEDIA/’
关于Django创建迁移文件的问题
关于Django与mysql连接,然后在生成迁移文件时候遇到的小错误。并给出的解决方案! 第一个错 因为mysqlclient报错导致的问题: File "E:\PythonEnvs\Django\envs_django\lib\site-packages\django\db\backends\mysql\base.py", line 36, in &lt;module&gt; raise...
常见的Python 2 和 3 差别
Python2.7print "hello"helloPython3.0print "hello" File "tmp.py", line 1 print "hello" ^ SyntaxError: invalid syntax正确应为: Python3.0print("hello")helloPython2.7print {}.keys()[]Pyth
利用python进行数据分析C02.P21-P29
利用python进行数据分析C02.P21-P29 利用python进行数据分析C02.P21-P29 用纯python代码对时区进行计数 用pandas对时区进行计数 统计window和非window用户数 根据时区和操作系统进行数据分组 用纯python代码对时区进行计数 #按行读取文件内容,并提取其中时区(‘tz’)属性的全部取值 import json pa...
flask+celery常见问题及解决方法
1、 [root@ansible flask_celery]# celery -A app worker --loglevel=info Traceback (most recent call last):   File "/usr/bin/celery", line 11, in     sys.exit(main())   File "/usr/lib/python2.7/site
Python编程常见问题与解答
1.问:Python代码运行速度和C语言相比,哪个更快?答:一般来说,Python代码的运行速度比C语言的慢很多,但是如果充分运用内置函数、标准库对象和函数式编程模式的话...
多进程---错误解决Attribute Error
多进程---错误解决Attribute Error: Can't get attribute 'long_time_task' on &amp;lt;module '__main__' (built-in)&amp;gt; StackOverflow解决办法 这个问题似乎是多处理器的一个设计特征。请参阅https://bugs.python.org/issue25053。由于某些原因Pool不能始终使用...
【python】速查手册(基础笔记) - 人生苦短,我用python
python学习笔记:小甲鱼python全套视频  +  python基础教程 第2版修订版(书附10个大型案例)python学习环境:(python3)win10下python3.5.4的IDLE  +  ubuntu下python3辅助python分享范围:适合有C/C++/JAVA任意语言之一为基础,不适合纯新手入门python语言优势:至今还没有一门编程语言,开发速度比Python快,运行...
手把手教你学python3第二讲
首先要在这补充上一讲没有说的几个地方。有一点python和matlab一样,不需要像c语言预先给变量定义类型才能赋值。python和matlab一样按Ctrl+C停止程序执行。&amp;gt;&amp;gt;&amp;gt; a=[1,2,3] &amp;gt;&amp;gt;&amp;gt; len(a) 3 &amp;gt;&amp;gt;&amp;gt; a.index(2) 1 &amp;gt;&amp;gt;&amp;gt; del a[:] &amp;gt;&amp;gt;&amp;gt; a
Pyinstaller 打包.py生成.exe的方法和报错总结
Pyinstaller 打包.py生成.exe的方法和报错总结 简介 有时候自己写了个python脚本觉得挺好用想要分享给小伙伴,但是每次都要帮他们的电脑装个python环境。虽然说装一下也快,但是相对来说效率还是不高,要是能将python的**.py文件转化为.exe**,那么世界将变得更美好。这篇文章我将简单的介绍如何使用Pyinstaller来打包我们的python脚本。 安装 Pyin...
第3章 Pandas数据处理(3.11-3.13)_Python数据科学手册学习笔记
3.11 向量化字符串操作 3.11.1 Pandas字符串操作简介 import numpy as np x = np.array([2,3,4,5,11,13]) x * 2 array([ 4, 6, 8, 10, 22, 26]) 由于NumPy并没有为字符串数组提供简单的接口, 因此需要通过繁琐的for循环来解决问题 data = ['peter','Paul','MARY','...
Hue安装与部署,并连接Impala
本文主要讲解了如何安装并启动Hue 4.1.0,然后连接impala集群进行sql查询。其中,还包含了在安装部署过程中遇到的一些问题,希望可以帮助到大家。   准备源文件 首先,我们需要下载hue的源代码,进行编译,这里有两种方式可以下载: 1. 通过git命令从github上直接拉取对应版本的分支即可,hue的官方git地址是:https://github.com/cloudera/hu...
DataFrame排序sort的问题
result = result.T.sort(['confidence','support'], ascending = False) 报以下错误: AttributeError: 'DataFrame' object has no attribute 'sort' 解决方式: sort_values()即可解决
Python调用json包读写中,load与loads区别分析
先放结果: json.loads()解码python json格式 json.load()加载python json格式文件——加载时必须有相应的json文件,否则无法加载。   关于json文件读写操作时,常用方法就是dump,dumps;load和loads。 首先理解,json文件内容读取后是str类型。 input: with open(&quot;abc.json&quot;, 'r') as ...
Object attribute对象 attribute.toString() 易出现空指针异常的解决方案
Object attribute = dataModel.getAttribute(“customItem13__c”); JSONArray imgarray = JSONArray.parseArray(String.valueOf(attribute)); 注意:尽量减少使用toString(); 容易空指针异常 1.object.toString()方法 这种方法要注意的是object不...
python微信聊天机器人
上回逗汁儿的朋友豆苗为了哄女朋友开心,爬了一堆的笑话让我来给处理一下,今天这货又来找我了,真是无事不登三宝殿啊,事情是这样的。 豆苗:逗汁儿啊,上次你的方法很不错,让我节约了很多时间,为了感谢你,请你吃个饭啊。 逗汁儿:算你有良心。 吃饭ing 豆苗:那个,逗汁儿啊,其实还有一事相求啊。 逗汁儿:…… 豆苗:上次那个笑话啊,我感觉每天发太累了,我想让微信自动发。你看能不能…… 逗汁儿...
用python做自动化测试--web 自动化测试(1)-Selenium 3.x使用系列问题集
运行 driver=webdriver.Firefox() 运行报错: Exception AttributeError: "'Service' object has no attribute 'process'" in d method Service.__del__ of t 0x028940B0>> ignored selenium.common.excepti
Tensorflow由于版本问题出现的几种错误及解决办法
1、AttributeError: 'module' object has no attribute 'rnn_cell' S:将tf.nn.rnn_cell替换为tf.contrib.rnn 2、TypeError: Expected int32, got list containing Tensors of type '_Message' instead. S:由于tf.conca...
关于Python中使用pymysql驱动连接数据库时报"XXX" object has no attribute ‘translate’的解决方法
    最近在使用flask开发时,用了pymysql驱动来连接数据库,但是在使用枚举类型作为数据库条件来对数据库进行查找数据时(如下图):        报出了以下错误:    原因:     数据库中使用的pending的类型为int型,而图中的PendingStatus.Success为枚举型, 与mysql中不一致,导致数据无法写入mysql 解决方法:     修改数据类型, 这里我只在...
CV2无法找到属性CV_CAP_PROP_FPS
刚刚学习OpenCV的时候,发现获得video的FPS总是不成功,提示无法找到属性CV_CAP_PROP_FPS.最终,在stackoverflow网站上找到了答案。看来,在做opencv的时候,一定要找到相对应的opencv的帮助文档。比如3.2版本的,要参考下面的链接,https://docs.opencv.org/3.2.0/d4/d15/group__videoio__flags__bas...
如何解决不能绘制网络模型,报错protobuf
绘制网络模型,总显示这样的错误: AttributeError: 'google.protobuf.pyext._message.RepeatedScalarConta' object has no attribute '_values' 具体内容见下: caffe:>> ./python/draw_net.py ./examples/cifar10/cifar10_quick_train_
Appium自动化过程中遇到的坑
1.滑动屏幕的坑(python)   导入appium和selenium(如图①) 运行的时候,一直报错:AttributeError: 'WebDriver' object has no attribute 'swipe'---WebDriver对象没有swipe属性   原因:在导入的时候appium放在了selenium的前面,导致selenium把appi
2018年7月21日python中的加密和解密
·在函数调用执行过程中: 如果出现return,return中的函数执行完则本函数就运行结束,return下面的语句不会再继续执行,所以return使 用时也应该注意,如果是调用函数的下面还有要输出的东西,可以不用写return,直接写函数名调用 ·在函数中的最后如果有返回值return True,他的位置一定要注意,不要放在for循环里面,否则循环只能执行1次, 要和for循环在同一个竖线上。...
tensorflow基本使用中出现的问题及解决方案
tensorflow基本使用中出现的问题及解决方案
Bug处理之执行自己编写代码中出现的AttributeError: ‘XXX’ object has no attribute’xxx’
操作系统Windows10.0; PythonIDE:Pycharm2018.02 Python版本:python3.6(anaconda平台) 自己编写脚本搭建股票数据库 问题描述:自己编写python脚本解决一些数据库搭建过程中的繁琐过程,方便以后重复调用; 编写的类在导入应用时报错AttributeError: ‘XXX’ object has no attribute’xxx’,...
Django2.0 应用 Xadmin 报错解决(补充)
  今天继续研究Django 发现又有了新情况!解决方法奉上!   1、TypeError at /xadmin/   login() got an unexpected keyword argument 'current_app'错误 Exception Location: /home/wuchao/PycharmProjects/mxonline3/extra_apps/xadmi...
记第一次接触RSA加密----python
记python使用支付宝RSA生成秘钥工具遇到的问题 报错 AttributeError: ‘str’ object has no attribute ‘ 我在和第三方对接接口时,第三方要求使用支付宝rsa秘钥工具来生成公钥和私钥(由于第一次接触,都不太懂)我需要对我请求他时带的参数需要进行签名,和对他的签名进行验证,但是中间一直出现VerificationError: Veri...
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo