flask项目经验总结

models 研究

BaseModel(object) 基础类,用来给子类继承

  1. create_time = db.Column(db.DATETIME, default=datetime.now()) 创建时间
  2. update_time = db.Column(db.DATETIME, default=datetime.now(),onupdate=datetime.now())
    最后一次修改时间

序列化,转换为json格式 id –> {‘id’: id}

def to_basic_dict(self):
    return {
     'id': self.id,
     'avatar': self.avatar,
     'image': self.index_image_url if self.index_image_url else '',
     'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S'),
}

api 接口 ,orm ,处理数据,

  1. 接收数据, form , file, args, argv,
  2. 判断数据的正确性,
    1. 是否为空 if not all([id_name, id_card])
    2. 是否合乎正则 if not re.match(r’^$’, phone):
    3. 是否被使用 if User.query.filter(User.id_card==id_card).count():
  3. 将数据存储到数据库,或者查询数据库,返回指定数据,jsonify
    try:
    db.session.add(user)
    db.session.commit()
    except Exception:
    return xxx

ajax

两种调用ajax的方法

  1. 页面加载完成,自动请求部分网页
  2. 点击按钮,上传或者请求数据

上传页面数据

  1. 获取单个值
    • name = $(‘#real-name’).val()
    • $.get(‘/user/user/’,{‘name’:name},function(data){})
  2. 获取表单,上传表单里的内容
$('#form-house-info').submit(function(){
    $.post('/house/newhouse/', $(this).serialize(),function(data){

    })
});

渲染页面的方法

  1. 局部简单渲染
    • 忽略,常规方法
  2. 大面积页面异步加载
    • script 方法。template 包

html 里

<div id="div1">div>
{% raw %}
<script type="text/html" id="sc1">
    {{each hlist as house}}
    需要在页面全部渲染的内容
    {{/each}}
script>
{% endraw %}

<script src="/static/js/template.js">script>

js 里


var area_name_html = template('sc1', {alist:data.alist});
$('#div1').append(area_name_html);

你可能感兴趣的:(flask,经验总结)