'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,因此可以说是天天会遇到各种各样自己不知道或者没见过的错误。之前的时候,并没有把所有遇到的问题,收集整理起来分享给大家。但是还是希望,从现在将自己平时学习中遇到的问题分享给大家做一些参考。也许有些是正确也许是错误。也欢迎大家一起来评论交流!!!此文章本人会陆陆续续的不断进行更新和补充完善,一起加油~~~~~~~nn1.AttributeError(“'str'...
小白学python之获取对象信息_学习笔记
本文以廖雪峰的官方网站为参考来学习python的。其学习链接为廖雪峰小白学python教程。nn本文是学习到python的获取对象信息。参考链接廖雪峰python获取对象信息。nn使用type()nnnprint(type(123))nprint(type('str'))nprint(type(None))nprint(type(abs))nnn运行结果为:nn&amp;lt;class 'int'&amp;gt...
python3大作战之encode与decode讲解
大家好,很久没更新了,也是年底了最近比较忙,同时也在研究python的其他内容,毕竟是python小白,自学道路艰难。rn好了今天和大家一起探讨下python3编码过程中对的一些转码事宜。rnpython3中对文本和二进制做了比较清晰的区分。python3默认编码为unicode,由str类型进行表示。二进制数据使用byte类型表示,所以不会将str和byte混在一起。在实际应用中我们经常需要将两
pytorch低版本加载高版本pytorch训练得到的模型,出现‘module’ object has no attribute ‘_rebuild_tensor_v2’错误
情景n使用pytorch0.3来加载Mobilenetv1的模型(用更高版本的pytorch训练得到的),出现“AttributeError: ‘module’ object has no attribute ‘_rebuild_tensor_v2’”错误。n分析n追根溯源,查看pytorch的源码,torch下__init__.py定义了__all__ = [**, ‘load’, **],然后...
Python学习(3)—— 基本数据类型一:数字类型
基本数据类型一:数字类型rnrn
python常见问题集合
1.urllib.error.URLError . certificate verify failed: unable to get local issuenn是python2.79以后版本的原因nhttps链接不是从签发机构买的n所以失败了,加一句ssl._create_default_https_context = ssl._create_unverified_contextn就可以nn2.P...
python打包exe问题
python打包exe问题n使用pyinstaller打包成exe时发现一个问题,AttributeError: ‘str’ object has no attribute ‘items’,开始以为是哪个import的包有问题,挨个卸载试了也不行,最终发现不是import包的问题,而是pyinstaller的问题,上网查到https://blog.csdn.net/m0_37876745/arti...
Django2.1.2创建工程后进入admin站点管理的时候报了:WSGIRequest' object has no attribute 'user 的错误
查stackoverflow和CSDN,这是由于Django版本的问题,在1.10之前,中间件的key为MIDDLEWARE_CLASSES;在1.10之后,中间件的key为MIDDLEWARE。nn项目的初始配置:nnMIDDLEWARE_CLASSES = (n 'django.contrib.sessions.middleware.SessionMiddleware',n 'dj...
python自然语言处理学习笔记三
第三章 处理原始文本rn rn1 从网络和硬盘访问文本rn#>的英文翻译 未作测试??rnFrom utlib import urlopenrnUrl=’http://www.gutenberg.org/files/2554/2554.txt’rnRaw=urlopen(url).read()rnType(raw)rnLen(raw)rnRaw[:75]rn rn#分词 未作测试??rnToken
【python】速查手册(基础笔记) - 人生苦短,我用python
python学习笔记:小甲鱼python全套视频  +  python基础教程 第2版修订版(书附10个大型案例)python学习环境:(python3)win10下python3.5.4的IDLE  +  ubuntu下python3辅助python分享范围:适合有C/C++/JAVA任意语言之一为基础,不适合纯新手入门python语言优势:至今还没有一门编程语言,开发速度比Python快,运行...
Tersorflow深度学习入门—— CIFAR-10 训练示例报错及解决方案
Tersorflow深度学习入门—— CIFAR-10 训练示例报错及解决方案, CNN图像分类与识别
记录 python 编程中遇到的错误
 nn1. 记录一个粗心大意导致的错误:'DataFrame' object has no attribute 'piovt'nn原因是拼写错误,正确的应该是 pivotnndf.pivot('A','B','C')nn要注意细节nn nn2.index=pd.date_range('11/13/2018',period=1000)nn出错: TypeError: __new__() got an...
DataFrame排序sort的问题
result = result.T.sort(['confidence','support'], ascending = False)rn报以下错误:rnrnAttributeError: 'DataFrame' object has no attribute 'sort'rn解决方式:rnsort_values()即可解决
编译CTPN过程总结
CTPN搭建步骤(仅CPU版Linux)主要参考了几位大神的博客,然后整理总结了一些。系统环境:Ubuntu 14.04一.  安装TensorFlow(Python版本为2.7)1.     首先通过命令安装pip和virtualenv:2.    使用命令创建virtualenv环境:(其中的targetDirectory是自己命名的一个空间,这里设置为~/tensorflow)3.    使...
Python调用json包读写中,load与loads区别分析
先放结果:nnjson.loads()解码python json格式njson.load()加载python json格式文件——加载时必须有相应的json文件,否则无法加载。nn nn关于json文件读写操作时,常用方法就是dump,dumps;load和loads。nn首先理解,json文件内容读取后是str类型。nnninput:nwith open(&quot;abc.json&quot;, 'r') as ...
多进程---错误解决Attribute Error
多进程---错误解决Attribute Error: Can't get attribute 'long_time_task' on &amp;lt;module '__main__' (built-in)&amp;gt;nnStackOverflow解决办法nnn 这个问题似乎是多处理器的一个设计特征。请参阅https://bugs.python.org/issue25053。由于某些原因Pool不能始终使用...
django 出现的错误
在做图片上传的时候出现了一个错误,具体描述如下: n在windows 下我可以上传,但是将django部署在apache时就显示permission deny。OSError at /img/ ,将目录的权限放通后还是不行。最后在setting中添加 nMEDIA_ROOT = ‘/HOME/L/MEDIA’ nMEDIA_ROOT_URL =’/MEDIA/’
机器学习实战——决策树Python实现问题记录
问题:NameError: name 'reload' is not definednnnimport impnimport treesnimp.reload(trees)nn结论:已经导入过的模块才能用reload, reload的参数应该是模块名,而不是文件名。在pyhton3.x中要先导入文件和imp模块,才能用imp.reload()nn问题:关于Plot图像不显示中文文字问题nn原因是标...
手把手教你学python3第二讲
首先要在这补充上一讲没有说的几个地方。有一点python和matlab一样,不需要像c语言预先给变量定义类型才能赋值。python和matlab一样按Ctrl+C停止程序执行。&amp;gt;&amp;gt;&amp;gt; a=[1,2,3]n&amp;gt;&amp;gt;&amp;gt; len(a)n3n&amp;gt;&amp;gt;&amp;gt; a.index(2)n1n&amp;gt;&amp;gt;&amp;gt; del a[:]n&amp;gt;&amp;gt;&amp;gt; an
python lxml包学习笔记
python lxml包用于解析XML和html文件,可以使用xpath和css定位元素,个人认为相对于BeautifulSoup功能更加强大,更加灵活。本文根据lxml官方文档和自己的理解列出常用的函数, 本文代码为python3.4, lxml2.0n lxml:http://lxml.de/n n 支持:python2 python3n解析XML, 以pubmed文献数据库文本解析为例导
Pyinstaller 打包.py生成.exe的方法和报错总结
Pyinstaller 打包.py生成.exe的方法和报错总结rnrn简介rn有时候自己写了个python脚本觉得挺好用想要分享给小伙伴,但是每次都要帮他们的电脑装个python环境。虽然说装一下也快,但是相对来说效率还是不高,要是能将python的**.py文件转化为.exe**,那么世界将变得更美好。这篇文章我将简单的介绍如何使用Pyinstaller来打包我们的python脚本。rn安装 Pyin...
Python实现IOC控制反转
思路:用一个字典存储beanName和资源 n初始化时先将beanName和资源注册到字典中 n然后用一个Dscriptor类根据beanName动态请求资源,从而实现控制反转# -*- coding:utf-8 -*-nimport osnclass BeanFactory: n """n Python版控制反转n context: 存储bean的名字和对应的类或者值的字典
Appium自动化过程中遇到的坑
1.滑动屏幕的坑(python)rn  导入appium和selenium(如图①)rnrnrnrn运行的时候,一直报错:AttributeError: 'WebDriver' object has no attribute rn'swipe'---WebDriver对象没有swipe属性rnrnrnrn  原因:在导入的时候appium放在了selenium的前面,导致selenium把appi
python微信聊天机器人
上回逗汁儿的朋友豆苗为了哄女朋友开心,爬了一堆的笑话让我来给处理一下,今天这货又来找我了,真是无事不登三宝殿啊,事情是这样的。nn豆苗:逗汁儿啊,上次你的方法很不错,让我节约了很多时间,为了感谢你,请你吃个饭啊。nn逗汁儿:算你有良心。nn吃饭ingnn豆苗:那个,逗汁儿啊,其实还有一事相求啊。nn逗汁儿:……nn豆苗:上次那个笑话啊,我感觉每天发太累了,我想让微信自动发。你看能不能……nn逗汁儿...
用python做自动化测试--web 自动化测试(1)-Selenium 3.x使用系列问题集
运行 driver=webdriver.Firefox()nnn运行报错:nException AttributeError: "'Service' object has no attribute 'process'" in nd method Service.__del__ of nt 0x028940B0>> ignorednnnselenium.common.excepti
pycharm中在子类中添加一个父类没有的属性
class Car():n &quot;&quot;&quot;一次模拟汽车的简单尝试&quot;&quot;&quot;n def __init__(self, make, model, year):n &quot;&quot;&quot;初始化描述汽车的属性&quot;&quot;&quot;n self.make = maken self.model = modeln self.year = yearn self.odo
第3章 Pandas数据处理(3.11-3.13)_Python数据科学手册学习笔记
3.11 向量化字符串操作n3.11.1 Pandas字符串操作简介nimport numpy as npnx = np.array([2,3,4,5,11,13])nx * 2nnarray([ 4, 6, 8, 10, 22, 26])nn由于NumPy并没有为字符串数组提供简单的接口, 因此需要通过繁琐的for循环来解决问题ndata = ['peter','Paul','MARY','...
如何解决不能绘制网络模型,报错protobuf
绘制网络模型,总显示这样的错误:nAttributeError: 'google.protobuf.pyext._message.RepeatedScalarConta' object has no attribute '_values'n具体内容见下:ncaffe:>> ./python/draw_net.py ./examples/cifar10/cifar10_quick_train_
Python无法连接mongodb数据库,Connection方法不存在
在这周学习python tornado的过程中,接触了新的数据库mongo.rn在刚开始连接的过程中,就出现了如下的问题,特此记录一下。rnAttributeError: 'module' object has no attribute 'Connection'rn rnpython版本2.7.11rnpymongo版本3.3.0rnrn根据网上的教程,首先导入pymongo,连接第一步的步骤大都
4. time模块的使用
n n n 1. 求操作所花的时间,时间戳相减import timetime1 = time.time()######一系列操作######time2 = time.time()print time2 - time1  #得到秒数2. 显示当前时间now = time.strftime(&quot;%Y-%m-%d %H:%M:%S&quot;)print now3. 时间戳转格式化时间...
tensorflow基本使用中出现的问题及解决方案
tensorflow基本使用中出现的问题及解决方案
Python的集合
昨天重新学习了Python的集合set。nnn# 21080723n#http://www.liujiangblog.com/course/python/24n#集合 setnns = set([1,2,3,4,4])nprint(s) #自动去重复n#运行结果: {1, 2, 3, 4}nn#知识点:n#set集合,使用花括号框定元素,并以逗号区分元素。n#创建集合使用set(),而非{...
CountVectorizer.transform出现的一个错误的解决
问题该错误的出现还是跟我上一个博客中讲述的问题有关,因为我将CountVectorizer的参数input设置为file,所以在本博客出现问题的代码中,因为给它的是一个字符串列表,所以就会出现错误。先看出现问题的代码:new_post = ['imaging databases']nnew_post_vec = vectorizer.transform(new_post)nprint(new_pos
关于Django创建迁移文件的问题
关于Django与mysql连接,然后在生成迁移文件时候遇到的小错误。并给出的解决方案!n第一个错n因为mysqlclient报错导致的问题:n File "E:\PythonEnvs\Django\envs_django\lib\site-packages\django\db\backends\mysql\base.py", line 36, in &lt;module&gt;n raise...
关于Python中使用pymysql驱动连接数据库时报"XXX" object has no attribute ‘translate’的解决方法
    最近在使用flask开发时,用了pymysql驱动来连接数据库,但是在使用枚举类型作为数据库条件来对数据库进行查找数据时(如下图):        报出了以下错误:    原因:     数据库中使用的pending的类型为int型,而图中的PendingStatus.Success为枚举型, 与mysql中不一致,导致数据无法写入mysql 解决方法:     修改数据类型, 这里我只在...
记第一次接触RSA加密----python
记python使用支付宝RSA生成秘钥工具遇到的问题rnrnrnrnrnrn报错 AttributeError: ‘str’ object has no attribute ‘rnrnrn 我在和第三方对接接口时,第三方要求使用支付宝rsa秘钥工具来生成公钥和私钥(由于第一次接触,都不太懂)我需要对我请求他时带的参数需要进行签名,和对他的签名进行验证,但是中间一直出现VerificationError: Veri...
《崔庆才Python3网络爬虫开发实战教程》学习笔记(4):解析库Xpath的使用方法总结
本篇博文是自己在学习崔庆才的《Python3网络爬虫开发实战教程》的学习笔记系列,如果你也要这套视频教程的话,加我WX吧:reborn0502,然后我私信给你百度云链接,公然放出来不太好~nn或者关注我公众号【程序员向东】,此公众号专注分享Python、爬虫学习资料和干货,关注后回复【PYTHON】,无套路免费送你一个学习大礼包,包括爬虫视频和电子书~nnnn-------------------...
Xcode常见报错及解决方案
持续更新xcode中遇到的常见报错及解决方案
flask+celery常见问题及解决方法
1、rn[root@ansible flask_celery]# celery -A app worker --loglevel=infornTraceback (most recent call last):rn  File "/usr/bin/celery", line 11, in rn    sys.exit(main())rn  File "/usr/lib/python2.7/site
Python编程常见问题与解答
n n n nn nn n n 1.问:Python代码运行速度和C语言相比,哪个更快?答:一般来说,Python代码的运行速度比C语言的慢很多,但是如果充分运用内置函数、标准库对象和函数式编程模式的话...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链解决 大数据get学习