• 记录Python学习中的几个小问题


    记录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': 1,
                    'name': 'taobao'
                }, {
                    'id': 2,
                    'name': 'jingdong'
                }, ...],

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

    taobao、jingdong

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

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

  • 相关阅读:
    Linux的JVM可以从SUN网站上下载
    实践是最好的老师
    SCAU 8624 多项式系数累加和
    SCAU 8617 阶乘数字和 (水题)
    SCAU 8614 素数
    SCAU 8619 公约公倍
    HDU ACM 1106 排序
    Uva 465 Overflow
    SCAU 8611 大牛之路I
    SCAU 9501 ACMer不得不知道的事儿
  • 原文地址:https://www.cnblogs.com/legendjslc/p/5417004.html
Copyright © 2020-2023  润新知