记录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. Qt窗口添加鼠标移动拖拽事件

    1. .h文件中添加 private:    QPoint dragPosition; 2. 在cpp文件中重写鼠标点击和拖拽函数 void ShapeWidget::mousePressEvent( ...

  2. machine leanring 笔记 vectorization

    the summation of the product of two terms can be expressed as the product of two vectors ps.  surf   ...

  3. MySql 数据库导入到 SQL Service

    1.下载安装ODBC驱动程序 地址:http://dev.mysql.com/downloads/connector/odbc/ 注意:系统的版本问题( 我的是64位的win7系统,但是SQL Ser ...

  4. cdnbest节点安装后连不上主控常见问题

    1. 查看节点程序是否启动 ps -aux |grep kangle 2. 如果节点程序都有启动,可查看日志,节点连接的是不是你帐号的uid帐号或者是否有其他报错信息 tail -f /var/log ...

  5. Cannot find or open the PDB file问题的解决

    'testcv.exe' (Win32): Loaded 'D:\Documents\Visual Studio 2013\Projects\testcv\x64\Debug\testcv.exe'. ...

  6. MyEclipse/Eclipse新建项目并且部署到服务器(tomcat)下

    1新建项目:file/new/web project/项目名/ok 2部署到tomcat下:tomcat右单机>>add/remove/选择项目/添加/完成(tomcat下有新建的项目) ...

  7. 初步认识html以及表格的制作

    12.21,冬至,天空中还下着小雨,雾霾也没有散去,但是也没有冲散节日的气氛,心情也是倍儿好. 今天学习了不少的内容,对我来说是对之前所学的一个巩固,内容比较多也比较杂乱一些,下面以例子的形式来表现: ...

  8. spring 自动扫描、注册的类是否可以定义构造函数

    答案是肯定的. 方法如下: @Service public class SimpleMovieLister { private MovieFinder movieFinder; @Autowired ...

  9. ABP JTable如何手动刷新子表数据

    function getSubMaster() { _$masterTable.find('.jtable-child-table-container').jtable('reload'); }

  10. 一般html5 手机端头部需要

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...