python编码规范

1 所有的py文件开头都必须声明编码

#coding:utf-8

2 导入模块的顺序

python编码规范
#import开头的写在前面
import sys
#from开头的
#from后面第一个字母相同的写在一起  层次少的写在前面
from qdutw.const import *
from django.http import HttpResponse
from django.shortcuts import render
from django.utils.encoding import smart_str
from django.views.decorators.csrf import csrf_exempt
python编码规范

3 等号 大于小于号等前后都要有空格

  逗号后面要有空格

  

python编码规范
xmlstr = smart_str(request.body)
        xml = etree.fromstring(xmlstr)
        MsgType = xml.find(MsgType).text
        FromUserName = xml.find(FromUserName).text
        #暂时只支持文本消息的获取 而且各种消息的xml结构不一样  先判断消息类型
        if MsgType == text:
            statistics(message_received)
            CreateTime = xml.find(CreateTime).text
            Content = xml.find(Content).text
            MsgId = xml.find(MsgId).text
            #处理微信消息
            return HttpResponse(auto_reply(FromUserName, Content, MsgType))
        elif MsgType == event:
            event = xml.find(Event).text
            #用户关注事件
            if event == subscribe:
                statistics(subscribe)
                return HttpResponse(auto_reply(FromUserName, "用户关注事件", text))
            else:
                statistics(unsubscribe)
        else:
            #不支持的消息类型
            return HttpResponse(auto_reply(FromUserName, 不支持的消息类型, text))
python编码规范

4 一般只使用双引号,单引号用作多行注释

   单行注释使用#开头的,放在要注释的语句上面。

   多行注释如果是用来说明这个函数的,应放在def ***():下一行

5 一般一个函数不要写的太长 适当的去拆分成函数和模块 尤其是一个函数实现了两个功能或者判断了几个不相关的情况然后处理的。

6 注意代码漏洞

  有的功能限制权限,比如加上@login_required() 

  

python编码规范
@login_required(login_url=teacher)
@is_teacher(redirect_url=‘‘)
def delete_experiment(request, experiment_id):
    try:
        experiment = Experiment.objects.get(id=experiment_id, 
                                            lesson__teacher=request.user)
    except Experiment.DoesNotExist:
        raise Http404
    experiment.delete()
    response = {"status_phrase": "ok", "lesson_id": experiment.lesson_id}
    return HttpResponse(simplejson.dumps(response))
python编码规范

这个也必须判断lesson_teacher是不是当前登录的用户,如果没有这一句就可能造成平行权限漏洞。

 

7 账户体系计划加上人人的OAuth 2.0认证,但是同时要注意防范风险。

  http://drops.wooyun.org/papers/598

 

 还有这个 修改和找回密码的时候可能存在的风险点

  http://drops.wooyun.org/papers/287

python编码规范

上一篇:flask(5):app.run介绍


下一篇:Python装饰器笔记