python 使用flask的理解

 

对于flask尾部的理解:

if __name__ == "__main__":
    app.run(host="127.0.0.2", port=8989, debug=True)

# 相当于python的模拟程序入口,如果运行当前文件,则该文件内容会被执行,若该文件内容被其他文件引用,则不会执行文件的内容
# 相当于Python模拟的程序入口,Python本身并没有这么规定,这只是一种编码习惯。由于模块之间相互引用,不同模块可能有这样的定义,而程序入口只有一个。到底哪个程序入口被选中,这取决于__name__的值。 
# 如果一个.py文件(模块)被直接运行时,则其没有包结构,其__name__值为__main__,即模块名为__main__。
# 所以,if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

# -*- coding: utf-8 -*-
import json
import psycopg2
from flask import request
from flask import Flask
from flask import make_response
from flask import jsonify
from validform import V, ValidateForm
from flask import Blueprint, g
from psycopg2 import connect,extras

import sys
import sqlite3
reload(sys)
sys.setdefaultencoding('utf8')
app = Flask(__name__)
headers = {'content-type': 'text/html; charset=utf-8'}
# conn = psycopg2.connect(database="zxy_student", user="postgres", password="****", host="0.0.0.0", port='5432')
# cursor = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
# cursor.execute("""select * from std_info""")

#sqlite返回字典型数据的工厂函数
def dict_factory(cursor, row):  
    d = {}  
    for idx, col in enumerate(cursor.description):  
        d[col[0]] = row[idx]  
    return d  
conn = sqlite3.connect('filltable.db')
conn.row_factory = dict_factory  
cursor = conn.cursor()
cursor.execute("""select a.node_id as anode_id,a.node_name as anode_name from nodeInfo a""")
value = cursor.fetchall()
cursor.close()
conn.close()
@app.route('/api/batch', methods=["POST"])
def testport(): 
    try:
        # form = ValidateForm(
        #     user=['用户', V.required()],
        #     password=['密码', V.optional()],
        # )
        # (flag, data) = form.validate()
        # if not flag:
        #     data['status'] = 'fail'
        #     return json.dumps(data)
        # print json.dumps(data['password'])
        # msg={'name':'xiaoming','age':'30','passdata':data['password']}
        # msg={'name':'xiaoming','age':'30'}
        # num=123
        # text='haha'
        # response = make_response(json.dumps({
        #     "data":{
        #         "msg":msg,
        #         "num":num,
        #         "text":text
        #     }
        # }))
        #在使用ajax时,后端处理跨域的方法
        # response.headers['Access-Control-Allow-Origin'] = '*'
        # return response
        # print '哈哈'
        return json.dumps({
            "status":"success",
            "data":value,
        })
    except Exception,e:
        return json.dumps({
            "status":"fail",
            # "data":msg,
            "msg":e
        })
# 相当于python的模拟程序入口,如果运行当前文件,则该文件内容会被执行,若该文件内容被其他文件引用,则不会执行文件的内容
# 相当于Python模拟的程序入口,Python本身并没有这么规定,这只是一种编码习惯。由于模块之间相互引用,不同模块可能有这样的定义,而程序入口只有一个。到底哪个程序入口被选中,这取决于__name__的值。 
# 如果一个.py文件(模块)被直接运行时,则其没有包结构,其__name__值为__main__,即模块名为__main__。
# 所以,if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
if __name__ == "__main__":
    app.run(host="127.0.0.2", port=8989, debug=True)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章