Hot For Coding
  • web.py获取上传文件名一个需要注意的细节

    直接切入主题,从HTML页面上传文件,Python接收处理。但其中发现有些小问题,把它写出来,算是积累吧!

    HTML页面代码:

    <form action="/admin/addgoodsaction/" method="post" enctype="multipart/form-data">
      <input type="file" name="image" />
    </form>
    

    Python处理部分代码:

    i = web.input()
    
    return i.image.filename
    

    执行结果切提示:

    <type 'exceptions.AttributeError'> at /admin/addgoodsaction/
    'str' object has no attribute 'filename'

    ...

    READ ALL

  • Python version 2.7 required, which was not found in the registry

    安装PIL库的时候,直接提示

    Python version 2.7 required, which was not found in the registry

    如图:

    full

    大意是说找不到注册表,网上搜索解决方案。

    新建一个register.py文件写入代码:

    import sys
      
    from _winreg import *
      
    # tweak as necessary
    version = sys.version[:3]
    installpath = sys.prefix
      
    regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
    installkey = "InstallPath"
    pythonkey = "PythonPath"
    pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
        installpath, installpath, installpath
    )
      
    def RegisterPy():
      try:
        reg = OpenKey(HKEY_CURRENT_USER, regpath)
    
      except EnvironmentError as e:
        try:
          reg = CreateKey(HKEY_CURRENT_USER, regpath)
          SetValue(reg, installkey, REG_SZ, installpath)
          SetValue(reg, pythonkey, REG_SZ, pythonpath)
          CloseKey(reg)
        except:
          print "*** Unable to register!"
          return
        print "--- Python", version, "is now registered!"
        return
    
      if (QueryValue(reg, installkey) == installpath and
        QueryValue(reg, pythonkey) == pythonpath):
        CloseKey(reg)
        print "=== Python", version, "is already registered!"
        return
    
      CloseKey(reg)
    
      print "*** Unable to register!"
      print "*** You probably have another Python installation!"
    

    ...

    READ ALL

  • web.py模板如何使用目录层级

    web.py的模板使用非常容易,但有时候我们需要做目录层级以便管理。那么如何使用目录层级的模板呢?

    通常我们使用模板的时候先声明模板文件夹

    render = web.template.render('templates')
    

    使用templates文件夹下index.html模板

    return render.index()
    

    使用templates文件夹下list.html模板

    return render.list()
    

    以上所有的html模板文件只放在tempates目录下,如果要在templates下建目录并使用目录下的模板文件只需加目录名称即可。

    ...

    READ ALL

  • Linux awk命令

    Linux有一个非常好用的命令awk,很多场景下都需要它,比如我要看看我的Nginx有没有运行,如果运行的话我就要杀掉它

    获取NginxPID的命令如下:

    [root@test01 ~]# ps -le | grep nginx
    5 S     0 12601     1  0  80   0 - 31048 sigsus ?        00:00:00 nginx
    5 S     0 30122 12601  0  80   0 - 31164 ep_pol ?        00:00:00 nginx
    5 S     0 30123 12601  0  80   0 - 31164 ep_pol ?        00:00:00 nginx
    

    ...

    READ ALL

  • 利用Google API生成二维码

    二维码的诞生就犹如短网址一样,应该是当前IT产物的代表了。当初微博推出短网址后,各大平台纷纷效仿,甚至API都提供了。现在二维码也在逐渐的成为一种规范,几乎百分之八十的应用都生成了自己的二维码。

    谷歌提供了一个生成二维码的接口,通过接口我们可以生成二维码,方便又快捷。

    接口地址

    http://chart.apis.google.com/chart?chs=宽高值x宽高值&cht=qr&chld=等级|边距&chl=内容

    参数说明

    • 宽高值:生成二维码尺寸,单位是像素,目前生成的二维码都是正方形的,所以两个宽高值都设置为一样的值
    • 等级:四个等级,L-默认:可以识别已损失的7%的数据;M-可以识别已损失15%的数据;Q-可以识别已损失25%的数据;H-可以识别已损失30%的数据
    • 边距:生成的二维码离图片边框的距离
    • 内容:生成二维码的内容,但一定要URLENCODE

    ...

    READ ALL

  • 如何高效的学习PHP

    PHP由于入门门槛低,许多快速建站都采用它,好多同学开始学习PHP建站

    这些建议都是我自身亲历成长过程中积累的一些看法,仅作参考,相信百分之八十对你都有帮助!

    • 熟悉PHP的语法,熟悉它的语法特性
    • 要有Web基础知识,如HTMLCSSJavaScript这样学习起来容易一些
    • 要重点看PHP的数据类型,数组操作,熟练的操作数组
    • 知道它如何取环境变量,如何获取GETPOST传餐
    • 用PHP写几个经典排序算法
    • 熟悉并知道如何维护php.ini
    • 随意添加扩展,如PDO扩展,并在PHP程序里尝试连接数据库
    • 如果你会C,你可以尝试写一个PHP模块
    • 配置PHP如何再Apache或者Nginx下工作,能明白工作的原理
    • 学会配置Debug环境,并可以在Debug模式下调试代码
    • 尝试写一个留言本,涉及增删改查
    • 尝试写一个上传文件的例子
    • 了解Smarty这类模板引擎的工作原理
    • 熟悉PHP类定义,如何实例化一个类
    • 知道什么是工厂模式、单例模式,它们之间有什么区别,什么场景下使用哪种方式

    ...

    READ ALL

  • web.py如何在模板中使用美元符号

    由于web.py已经在模板中定义$符号位定界符,所以在模板中如果要使用美元符号需要特殊处理。

    如我要在模板中输出$name字符串:

    $name

    报错

    <type 'exceptions.NameError'> at /
    global name 'name' is not defined
    

    $name被认定为一个变量而不是当作HTML字符串处理。如果想要输出$name字符串必须要这么写:

    $$name

    保存运行正确输出。

    特别是跟jQuery里混合使用的时候,也要注意。如:

    $("id").html("琼台博客");
    

    ...

    READ ALL

  • Python如何import文件夹下的文件

    Python的import包含文件功能就跟PHP的include类似,但更确切的说应该更像是PHP中的require,因为Python里的import只要目标不存在就报错程序无法往下执行。要包含目录里的文件,PHP中只需要给对路径就OK。Python中则不同,下面来看看这个例子。

    目录结构:

    $ tree ./
    ./
    ├── a.py
    └── dir
        └── b.py
    

    a.py要import dir目录下的b.py文件。

    b.py:

    name = 'zhangsan'
    

    a.py:

    # coding=utf-8
    "import dir 目录下的 b.py 文件"
     
    import dir.b
     
    print dir.b.name
    

    ...

    READ ALL

  • web.py曲折的Hello word!

    看了web.py相关手册以后,决定下载试试。web.py不大,下载解压然后python setup.py install安装成功。于是赶紧写出第一个激动人心的Hello word

    代码如下:

    # coding=utf-8
    import web
     
    urls=(
      '/','index'
    )
     
    class index:
      def GET(self):
        return 'Hello Word'
      
    app=web.application(urls,globals())
    app.run()
    

    控制台运行如下:

    python index.py 80
    http://0.0.0.0:80/
    http://0.0.0.0:80/
    

    ...

    READ ALL

  • Django配置URL需要注意的地方

    Django中每一个视图的访问都需要配置相应的URL,然而配置URL的时候需要注意末尾是否加了/符号,这个会影响到你的表单提交或者Ajax异步提交的问题。

    我们先来看看第一个实例,比如我的URL规则

    url(r'^users/api/(\w{1,20})/$','api')

    那么我们Ajax提交到这个URL的时候,就需要写完整的URL

    http://127.0.0.1/users/api/add/

    不能写

    http://127.0.0.1/users/api/add

    下面来看看提交到http://127.0.0.1/users/api/add的结果

    ...

    READ ALL