Cómo escribir un marco de red en Python
PASO.1
Primero debemos elegir en qué protocolo escribir dicho marco. Podemos elegir entre protocolo CGI o interfaz WSGI. Si usamos CGI, en realidad solo necesitamos escribir un programa Python de acuerdo con la especificación CGI, y luego, cada vez que el servidor recibe una solicitud, bifurcamos un programa para ejecutar la solicitud y devolver el comentario/$','func_comment'),
('^/environ/$', 'get_environ'),
('^/post/$', 'post_test')] #urls proporcionadas para personas de desarrollo de aplicaciones para crear enlaces.
def getPage(self):
ruta = self.environ['PATH_INFO']
para patrón en self.urls:
m = re.match(pattern[0], path)#Escriba el elemento 0 del elemento URL que coincida con la ruta. Si coincide, devuelva el nombre de la función
si m:
. function = getattr(self, patrón[1])#el método getattr obtiene la función
return function()
return '404 not found'#No coincidió con nada
Una vez que lo hayas escrito, simplemente agrega un metaancestro a la lista de URL cada vez que agregas una página.
PASO.4 Obtener la plantilla
Dado que estás escribiendo una aplicación web, la plantilla debe existir. Aquí proporciono un método getTemplate para lograr esto. Pero sólo proporciono sustitución de variables. def getTemplate(self, tem_name, rep=0):
#Esta función devuelve el contenido, tem_name es el nombre del archivo
#El parámetro rep es un diccionario, el valor predeterminado es 0
f = open('template/' tem_name)
html = f.read()
html = f.read()
if( rep!=0):
for to_replace in rep:
strinfo = re.compile('\{\s*' str(to_replace) '\s* \}')
html = strinfo.sub(rep[to_replace], html)
devolver html
PASO.5 procesar datos POST
Para obtener los datos POST, tenemos que procesarlos a través del entorno ['wsgi.input']. En realidad, es la entrada estándar del sistema. environ['wsgi.input'] = sys.stdin
Una vez que sabes esto, es muy sencillo de escribir.
def getPost(self):
if(self.environ['REQUEST_METHOD'] == 'POST'):
prueba:
request_body_size = int( self.environ.get(' CONTENT_LENGTH', 0))#Lea el valor de content_length
excepto:
request_body_size = 0
request_body = self.environ ['wsgi.input'].read( request_body_size) #request_body
post_data = parse_qs(request_body)#parse_qs es un método proporcionado por cgi para ayudarnos a procesar solicitudes
return post_data< / p>
Enlace a la base de datos de importación MySQLdb
clase Modelo(objeto):
def __init__(self):
self.host = 'localhost '
self.port = 3306
self.host = 'localhost'
self.port = 'localhost'
self. host = 'localhost'
//p>
post_data = parse_qs(request_body)port = 3306
usuario = 'admin'
self.passwd = 'admin'
self.db = 'xieyi'
def build_connect(self):
self.conn = MySQLdb. conectar (
host = self.host,
puerto = self.port,
usuario = self.usuario,
contraseña = self .passwd,
db = self.db
)
def exec_ins( self, ins):
cur = self. conn .cursor()
num = cur.execute(ins)
info = {}
if(numgt;0):
info = cur.execute(ins)
if(numgt;0):
if(numgt;0):
info = cur.execute (ins)