记录Python学习中的几个小问题,和C#\JAVA的习惯都不太一样。

1、Django模板中比较两个值是否相等

错误的做法

<option value="{{group.id}}" {%if group.id==gr.id %}selected='selected'{% endif %}>{{group.name}}</option>

正确的做法

<option value="{{group.id}}" {%ifequal group.id gr.id %}selected='selected'{% endifequal %}>{{group.name}}</option>

2、两个dict合并

dictMerged=dict(dict1)
dictMerged.update(dict2)

或者

dict1.update(dict2)

3、合并request.GET到字典

一直以为request.GET和request.POST的类型是dict, 直接按照第二条合并就可以,但合并结果不对,检查后才知道request.GET和request.POST类型是QueryDict。

QueryDict有dict方法获取到dict表示,以下代码合并:

context.update(request.GET.dict());

4、ubuntu安装pip

$ sudo apt-get install python-pip python-dev build-essential
$ sudo pip install --upgrade pip
$ sudo pip install --upgrade virtualenv
安装mysql拓展包可以:sudo pip install mysql-python
安装其他的包只要pip + 包的名字 就行了 很方便。而且安装完的mysqlib用起来没一点问题,
安装mysql 
apt-get install mysql-server

5、安装python wheel的whl文件

当然也可以自己下载.whl文件进行安装

wheel文件本质上就是zip或者rar,只不过他更加方便python的安装以及使用。在之前的图片中我们只要使用pip install wheel 就可以安装wheel。

之前直接使用pip install beautifulsoup来安装beautifulsoup,

在安装了wheel之后我们可以使使用pip install XXX.whl来安装.whl的文件了。

6、sqlalchemy报错:AttributeError: Neither 'ColumnClause' object nor 'Comparator' object has an attribute 'description'

定义模型是db.Column, 注意Column要大写

参见:http://stackoverflow.com/questions/35047991/sqlalchemy-error-in-elements-py-columnclause-nor-comparator-has-description

Column should be capitalized, as in:

streetnum = db.Column(db.String(100))

:)

7、sqlalchemy query 结果的JSON序列化

@manage_page.route('/metadata/<cid>/data2')
def metadata_data2(cid):
files = DataFile.query.join(DataItem, DataFile.id == DataItem.item_id).all()
#print jsonify( {c.name: getattr(row, c.name) for c in DataFile.__table__.columns} for row in files)
return jsonify( [{c: getattr(row,c) for c in DataFile.__table__.columns.keys()} for row in files])

参考文献,非常详细:

How to serialize SqlAlchemy result to JSON?

http://stackoverflow.com/questions/5022066/how-to-serialize-sqlalchemy-result-to-json

8、python数组去重

直接用set就行,比如:

l = [1, 1, 2, 2, 3, 4, 5]
s = set(l)
c = [i for i in s]
print c

结果为:

[1, 2, 3, 4, 5]

9、jinja2模板中数组的join显示

第一次错误:

value="{{ ','.join([t.text for t in meta.ds_topic_tags ]) }}"

上面语句是不行的,别问我为什么,我也不知道。报错: TemplateSyntaxError: expected token ',', got 'for'

参考了:https://segmentfault.com/q/1010000003106582/a-1020000003703942

假设response的数据是:

            'merchants': [{
'id': ,
'name': 'taobao'
}, {
'id': ,
'name': 'jingdong'
}, ...],

如何在模板渲染后变成以下形式:

taobao、jingdong

jinja2官方一个过滤器join,但只支持一维list。

查看文档发现还有一个 attribute 参数:
{{ item.merchants | join("、", attribute="name") }}

记录Python学习中的几个小问题的更多相关文章

  1. 【PyTorch教程】P3. Python学习中的两大法宝函数(当然也可以用在PyTorch)

    温馨提示:为了更好的教程体验,提供视频.阅读地址 Youtube: https://www.youtube.com/playlist?list=PLgAyVnrNJ96CqYdjZ8v9YjQvCBc ...

  2. 记录python学习过程中的一些小心得

    1.python中一切皆对象,内置数据结构也是对象.处理一个对象就是利用它带有的方法和属性,对该对象进行处理,一步步达到我们想要的结果. 2.编程时,先构思好我们处理的对象是什么,具有哪些属性和方法, ...

  3. Python学习中的一些小例子

    这篇文章包括用Python编写的斐波那契数列,三位数的水仙花数和百钱买百鸡的基础代码 斐波那契数列: ''' def hanshu(n): n_1 = 1 n_2 = 1 m = n sumn = 0 ...

  4. 老男孩python学习之作业一购物小程序

    想学编程由来已久 始终没有个结果,痛心不已 如今再次捡起来,望不负期望,不负岁月 ......一万字的废话...... 先介绍一下我的自学课程吧 "路飞学城"的<python ...

  5. python学习中遇到的错误及解决办法

    1. nodename nor servname provided 原因:Python程序中有段程序调用 socket.gethostbyname(socket.gethostname()) sock ...

  6. Python学习中的“按位取反”笔记总结

    | 疑惑 最近在学习Python的过程中了解到位运算符,但对于按位取反有点迷糊,就比如说~9(按位取反)之后的结果是-10,为什么不是6呢?所以下面就来看看为什么不是6,正确结果是如何计算出来的呢? ...

  7. python 学习中遇到的问题

    一.安装pip中遇到的问题. 出现错误:ImportError:DLL load failed :%1不是有效的win32应用程序 出现问题解答: 主要是由于安装的python版本和所下载的安装包版本 ...

  8. python学习中,list/tuple/dict格式化遇到的问题

    昨天上了python培训的第一课,学习了基础知识.包括类型和赋值,函数type(),dir(),id(),help()的使用,list/tuple/dict的定义以及内置函数的操作,函数的定义,控制语 ...

  9. 我在Python学习中遇到的问题一

    开发工具:PyCharm 系统:macOs Serria 10.12.4 jetbrains出品,作为和idea一个公司的兄弟产品,延续了idea的易用性,并且操作按钮也基本一致 一. 执行环境问题 ...

随机推荐

  1. vb.net字符串格式转为日期型

    vb.net字符串格式转为日期型  比如 "20080815" 转换为"2008-05-15"Dim a As Date  Dim s As String = ...

  2. vc++ 判断文件或是文件夹是否存在,比较好的做法

    #include <windows.h> void main() { //文件或文件夹都可以判断,最后的\\号有无都没关系 !=GetFileAttributes("D:\\My ...

  3. chattr无法删除某个文件

    chattr LNMP无法删除或更改权限,显示:rm: cannot remove `.user.ini': Operation not permitted 无法删除".user.ini&q ...

  4. html初学者了解的笔记02

    一.Html简介 HTML 是一种标记语言 忽略大小写,语法宽松 使用 HTML 标记和元素,可以: 控制页面和内容的外观 发布联机文档 使用 HTML 文档中插入的链接检索联机信息 创建联机表单,收 ...

  5. jsp 内置对象

    1.Request 指属性在一次请求范围内有效.如果页面从给一个页面跳转到另一个页面,那么该属性就失效了.这里所指的跳转是指客户端跳转,比如客户单击超链接跳转到其他页面或者通过浏览器地址栏浏览其他页面 ...

  6. DUILIB 实现微信气泡聊天效果

    最近由于项目原因,需要做一个产品内嵌的IM聊天系统.而且要象微信类似的效果:界面也要比较炫: 开始考虑用MFC,但MFC的控件自绘很麻烦,后来又考虑QT,倒是使用控件使用方便,但QT库太大,所以也放弃 ...

  7. Synchronized和Static Synchronized区别

    通过分析这两个用法的分析,我们可以理解Java中锁的概念. 一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念), 一个是全局锁(该锁针对的是类,无论实例多少个对象,那么线 ...

  8. Frameset 框架集 导航栏 的使用

    在index.jsp中 使用jsp标签转发到制定页面 <body> <jsp:forward page="/admin/frame.jsp"></js ...

  9. [刘阳Java]_MyBatis_映射文件的select标签入门_第3讲

    1.Mybatis映射文件的<select>标签主要帮助我们完成SQL语句查询功能,<select>标签它包含了很多属性,下面简单对<select>标签的属性做一个 ...

  10. UILabel添加图片之富文本的简单应用

    若想对UILabel添加图片,那么就需要使用NSMutableAttributedString来定义先定义一个普通的label UILabel *lab = [[UILabel alloc]initW ...