中文字幕人妻中文_99精品欧美一区二区三区综合在线_精品久久久久一区二区_色月丁香_免费福利在线视频_欧美大片免费观看网址_国产伦精品一区二区三区在线播放_污污污污污污www网站免费_久久月本道色综合久久_色69激情爱久久_尹人香蕉久久99天天拍_国产美女www_亚洲国产精品无码7777一线_五月婷婷六月激情_看免费一级片_精品久久久久久成人av_在线色亚洲_女人另类性混交zo_国产精品青青在线观看爽香蕉_人人澡人人添人人爽一区二区

主頁 > 知識庫 > python flask框架詳解

python flask框架詳解

熱門標簽:400電話 申請 條件 鄭州智能外呼系統中心 汕頭電商外呼系統供應商 北京外呼電銷機器人招商 賓館能在百度地圖標注嗎 crm電銷機器人 云南地圖標注 南京crm外呼系統排名 電銷機器人 金倫通信

Flask是一個Python編寫的Web 微框架,讓我們可以使用Python語言快速實現一個網站或Web服務。本文參考自Flask官方文檔,
英文不好的同學也可以參考中文文檔

1.安裝flask

pip install flask

2.簡單上手

一個最小的 Flask 應用如下:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
 return 'Hello World'

if __name__ == '__main__':
 app.run()

代碼解析:
1、首先我們導入了 Flask 類。 該類的實例將會成為我們的 WSGI 應用。
2、接著我們創建一個該類的實例。第一個參數是應用模塊或者包的名稱。如果你使用 一個單一模塊(就像本例),那么應當使用 name ,因為名稱會根據這個 模塊是按應用方式使用還是作為一個模塊導入而發生變化(可能是 ‘main' , 也可能是實際導入的名稱)。這個參數是必需的,這樣 Flask 才能知道在哪里可以 找到模板和靜態文件等東西
3、然后我們使用 route() 裝飾器來告訴 Flask 觸發函數的 URL 。
4、函數名稱被用于生成相關聯的 URL 。函數最后返回需要在用戶瀏覽器中顯示的信息。

運行結果:

* Serving Flask app "flask_demo" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

訪問:http://127.0.0.1:5000/

app.route(rule, options)
  • rule 參數表示與該函數的URL綁定。
  • options 是要轉發給基礎Rule對象的參數列表。在上面的示例中,'/ ' URL與hello_world()函數綁定。因此,當在瀏覽器中打開web服務器的主頁時,將呈現該函數的輸出。最后,Flask類的run()方法在本地開發服務器上運行應用程序。
app.run(host, port, debug, options)

所有參數都是可選的

  • host:要監聽的主機名。 默認為127.0.0.1(localhost)。設置為“0.0.0.0”以使服務器在外部可用
  • port :默認值為5000
  • debug:默認為false。 如果設置為true,則提供調試信息,可以自動重載代碼并顯示調試信息
  • options:要轉發到底層的Werkzeug服務器。

2.1 調試模式

雖然 flask 命令可以方便地啟動一個本地開發服務器,但是每次應用代碼 修改之后都需要手動重啟服務器。這樣不是很方便, Flask 可以做得更好。如果你打開 調試模式,那么服務器會在修改應用代碼之后自動重啟,并且當應用出錯時還會提供一個 有用的調試器。
在命令行中,如果需要打開所有開發功能(包括調試模式),那么要在運行服務器之前導出 FLASK_ENV 環境變量并把其設置為 development:

$ export FLASK_ENV=development
$ flask run

在代碼中,在運行或將調試參數傳遞給run()方法之前,通過將application對象的debug屬性設置為True來啟用Debug模式。

app.debug = True
app.run()
# 或者
app.run(debug = True)

2.2 綁定IP和端口

默認情況下,Flask綁定IP為127.0.0.1,端口為5000。我們也可以通過下面的方式自定義:

app.run(host='0.0.0.0', port=80, debug=True)

0.0.0.0代表電腦所有的IP。80是HTTP網站服務的默認端口。什么是默認?比如,我們訪問網站http://www.example.com,其實是訪問的http://www.example.com:80,只不過:80可以省略不寫。

3.Flask 路由

現代Web框架使用路由技術來幫助用戶記住應用程序URL。可以直接訪問所需的頁面,而無需從主頁導航。

Flask中的route()裝飾器用于將URL綁定到函數。例如:

@app.route('/hello')
def hello_world():
 return 'hello world'

在這里,URL'/ hello'規則綁定到hello_world()函數。 因此,如果用戶訪問http://localhost:5000/hello URL,hello_world()函數的輸出將在瀏覽器中呈現。

application對象的add_url_rule()函數也可用于將URL與函數綁定,如上例所示,使用route()裝飾器的目的也由以下表示:

def hello_world():
 return 'hello world'
app.add_url_rule('/', 'hello', hello_world)

4.Flask 變量規則

通過向規則參數添加變量部分,可以動態構建URL。此變量部分標記為 converter:variable_name>。它作為關鍵字參數傳遞給與規則相關聯的函數。
在以下示例中,route()裝飾器的規則參數包含附加到URL'/hello'name>。 因此,如果在瀏覽器中輸入http://localhost:5000/hello/chenshifeng作為URL,則'chenshifeng'將作為參數提供給 hello()函數。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:flask_demo.py
@time:2021/03/01
"""
from flask import Flask

app = Flask(__name__)

@app.route('/hello/name>')
def hello_name(name):
 return 'Hello %s!' % name

if __name__ == '__main__':
 app.run(debug=True)

運行,訪問:http://localhost:5000/hello/chenshifeng

除了默認字符串變量部分之外,還可以使用以下轉換器構建規則:

轉換器 描述
string (缺省值) 接受任何不包含斜杠的文本
int 接受正整數
float 接受正浮點數
path 類似 string ,但可以包含斜杠
uuid 接受 UUID 字符串

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:flask_demo.py
@time:2021/03/01
"""
from flask import Flask

app = Flask(__name__)


@app.route('/post/int:post_id>')
def show_post(post_id):
 # show the post with the given id, the id is an integer
 return 'Post %d' % post_id

@app.route('/path/path:subpath>')
def show_subpath(subpath):
 # show the subpath after /path/
 return 'Subpath %s' % subpath

if __name__ == '__main__':
 app.run(debug=True)


4.1唯一的 URL / 重定向行為

以下兩條規則的不同之處在于是否使用尾部的斜杠。:

@app.route('/projects/')
def projects():
 return 'The project page'

@app.route('/about')
def about():
 return 'The about page'

projects 的 URL 是中規中矩的,尾部有一個斜杠,看起來就如同一個文件夾。 訪問一個沒有斜杠結尾的 URL 時 Flask 會自動進行重定向,幫你在尾部加上一個斜杠。

about 的 URL 沒有尾部斜杠,因此其行為表現與一個文件類似。如果訪問這個 URL 時添加了尾部斜杠就會得到一個 404 錯誤。這樣可以保持 URL 唯一,并幫助 搜索引擎避免重復索引同一頁面。

5.Flask URL構建

url_for()函數對于動態構建特定函數的URL非常有用。該函數接受函數的名稱作為第一個參數,以及一個或多個關鍵字參數,每個參數對應于URL的變量部分。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:flask_demo.py
@time:2021/03/01
"""
from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route('/admin')
def hello_admin():
 return 'Hello Admin'

@app.route('/guest/guest>')
def hello_guest(guest):
 return 'Hello %s as Guest' % guest
@app.route('/user/name>')
def hello_user(name):
 if name == 'admin':
 return redirect(url_for('hello_admin'))
 else:
 return redirect(url_for('hello_guest', guest=name))
if __name__ == '__main__':
 app.run(debug=True)

redirect函數用于重定向,實現機制很簡單,就是向客戶端(瀏覽器)發送一個重定向的HTTP報文,瀏覽器會去訪問報文中指定的url。

運行
打開瀏覽器并輸入URL - http://localhost:5000/user/admin

Hello Admin

在瀏覽器中輸入以下URL - http://localhost:5000/user/mvl

Hello mvl as Guest

6.Flask HTTP方法

Web 應用使用不同的 HTTP 方法處理 URL 。當你使用 Flask 時,應當熟悉 HTTP 方法。 缺省情況下,一個路由只回應 GET 請求。 可以使用 route() 裝飾器的 methods 參數來處理不同的 HTTP 方法:

方法 描述
GET 以未加密的形式將數據發送到服務器,最常見的方法。
HEAD 和GET方法相同,但沒有響應體。
POST 用于將HTML表單數據發送到服務器,POST方法接收的數據不由服務器緩存。
PUT 用上傳的內容替換目標資源的所有當前表示。
DELETE 刪除由URL給出的目標資源的所有當前表示。

默認情況下,Flask路由響應GET請求。但是,可以通過為route()裝飾器提供方法參數來更改此首選項。

為了演示在URL路由中使用POST方法,首先讓我們創建一個HTML表單,并使用POST方法將表單數據發送到URL。
將以下腳本另存為login.html

html>
 body>
 
 form action = "http://localhost:5000/login" method = "post">
 p>Enter Name:/p>
 p>input type = "text" name = "nm" />/p>
 p>input type = "submit" value = "submit" />/p>
 /form>
 
 /body>
/html>

運行以下代碼

from flask import Flask, redirect, url_for, request
app = Flask(__name__)

@app.route('/success/name>')
def success(name):
 return 'welcome %s' % name

@app.route('/login',methods = ['POST', 'GET'])
def login():
 if request.method == 'POST':
 user = request.form['nm']
 return redirect(url_for('success',name = user))
 else:
 user = request.args.get('nm')
 return redirect(url_for('success',name = user))

if __name__ == '__main__':
 app.run(debug = True)

在瀏覽器中打開login.html,在文本字段中輸入name,然后單擊提交。

表單數據將POST到表單標簽的action子句中的URL。

http://localhost/login映射到login()函數。由于服務器通過POST方法接收數據,因此通過以下步驟獲得從表單數據獲得的“nm”參數的值:
表單數據將POST到表單標簽的action子句中的URL。

user = request.form['nm']

它作為變量部分傳遞給'/ success' URL。瀏覽器在窗口中顯示welcome消息。

在login.html中將方法參數更改為'GET',然后在瀏覽器中再次打開它。服務器上接收的數據是通過GET方法獲得的。通過以下的步驟獲得'nm'參數的值:

User = request.args.get('nm')

這里,args是包含表單參數對及其對應值對的列表的字典對象。與'nm'參數對應的值將像之前一樣傳遞到'/ success' URL。

7.Flask 模板

在大型應用中,把業務邏輯和表現內容放在一起,會增加代碼的復雜度和維護成本.

  • 模板其實是一個包含響應文本的文件,其中用占位符(變量)表示動態部分,告訴模板引擎其具體的值需要從使用的數據中獲取
  • 使用真實值替換變量,再返回最終得到的字符串,這個過程稱為'渲染'
  • Flask 是使用 Jinja2 這個模板引擎來渲染模板

使用模板的好處

視圖函數只負責業務邏輯和數據處理(業務邏輯方面)而模板則取到視圖函數的數據結果進行展示(視圖展示方面)代碼結構清晰,耦合度低

使用 render_template() 方法可以渲染模板,你只要提供模板名稱和需要 作為參數傳遞給模板的變量就行了。
Flask 會在 templates 文件夾內尋找模板。因此,如果你的應用是一個模塊, 那么模板文件夾應該在模塊旁邊;如果是一個包,那么就應該在包里面:
情形 1 : 一個模塊:

/application.py
/templates
 /hello.html

情形 2 : 一個包:

/application
 /__init__.py
 /templates
 /hello.html

示例代碼:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
 my_int = 18
 my_str = 'curry'
 my_list = [1, 5, 4, 3, 2]
 my_dict = {
 'name': 'durant',
 'age': 28
 }

 # render_template方法:渲染模板
 # 參數1: 模板名稱 參數n: 傳到模板里的數據
 return render_template('hello.html',
  my_int=my_int,
  my_str=my_str,
  my_list=my_list,
  my_dict=my_dict)


if __name__ == '__main__':
 app.run(debug=True)
!DOCTYPE html>
html lang="en">

head>
 meta charset="UTF-8">
 title>Title/title>
/head>

body>
 h2>我是模板/h2>
 {{ my_int }}
 br>
 {{ my_str }}
 br>
 {{ my_list }}
 br>
 {{ my_dict }}
 hr>
 h2>模板的list數據獲取/h2>
 hr>
 {{ my_list[0] }}
 br>
 {{ my_list.1 }}
 hr>
 h2>字典數據獲取/h2>
 hr>
 {{ my_dict['name'] }}
 br>
 {{ my_dict.age }}
 hr>
 h2>算術運算/h2>
 br>
 {{ my_list.0 + 10 }}
 br>
 {{ my_list[0] + my_list.1 }}
/body>

/html>

運行效果:

8.Flask 靜態文件

動態的 web 應用也需要靜態文件,一般是 CSS 和 JavaScript 文件。理想情況下你的 服務器已經配置好了為你的提供靜態文件的服務。但是在開發過程中, Flask 也能做好 這項工作。只要在你的包或模塊旁邊創建一個名為 static 的文件夾就行了。 靜態文件位于應用的 /static 中。
使用特定的 'static' 端點就可以生成相應的 URL

url_for('static', filename='style.css')

這個靜態文件在文件系統中的位置應該是 static/style.css 。

在下面的示例中,在index.html中的HTML按鈕的OnClick事件上調用hello.js中定義的javascript函數,該函數在Flask應用程序的“/”URL上呈現。

from flask import Flask, render_template
app = Flask(__name__)

@app.route("/")
def index():
 return render_template("index.html")

if __name__ == '__main__':
 app.run(debug = True)

index.html的HTML腳本如下所示:

html>

 head>
 script type = "text/javascript"
 src = "{{ url_for('static', filename = 'hello.js') }}" >/script>
 /head>

 body>
 input type = "button" onclick = "sayHello()" value = "Say Hello" />
 /body>

/html>

Hello.js包含sayHello()函數。

function sayHello() {
 alert("Hello World")
}

運行效果:

9.Flask Request對象

來自客戶端網頁的數據作為全局請求對象發送到服務器。為了處理請求數據,應該從Flask模塊導入。

Request對象的重要屬性如下所列:

  • form - 它是一個字典對象,包含表單參數及其值的鍵和值對。
  • args - 解析查詢字符串的內容,它是問號(?)之后的URL的一部分。
  • Cookies - 保存Cookie名稱和值的字典對象。
  • files - 與上傳文件有關的數據。
  • method - 當前請求方法

首先,你必須從 flask 模塊導入請求對象:

from flask import request

9.1 Flask 將表單數據發送到模板

我們已經看到,可以在 URL 規則中指定 http 方法。觸發函數接收的 Form 數據可以以字典對象的形式收集它并將其轉發到模板以在相應的網頁上呈現它。

在以下示例中,'/' URL 會呈現具有表單的網頁(student.html)。填入的數據會發布到觸發 result() 函數的 '/result' URL。

result() 函數收集字典對象中的 request.form 中存在的表單數據,并將其發送給 result.html。

該模板動態呈現表單數據的 HTML 表格。

下面給出的是應用程序的 Python 代碼:

from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def student():
 return render_template('student.html')


@app.route('/result',methods = ['POST', 'GET'])
def result():
 if request.method == 'POST':
 result = request.form
 return render_template("result.html",result = result)


if __name__ == '__main__':
 app.run(debug = True)

下面給出的是 student.html 的 HTML 腳本。

!DOCTYPE html>
html lang="en">
head>
 meta charset="UTF-8">
 title>Title/title>
/head>
body>
 form action="http://localhost:5000/result" method="POST">
 p>Name input type = "text" name = "Name" />/p>
 p>Physics input type = "text" name = "Physics" />/p>
 p>Chemistry input type = "text" name = "chemistry" />/p>
 p>Maths input type ="text" name = "Mathematics" />/p>
 p>input type = "submit" value = "submit" />/p>
 /form>
/body>
/html>

下面給出了模板( result.html )的代碼:

!doctype html>
 table border = 1>
 {% for key, value in result.items() %}
 tr>
 th> {{ key }} /th>
 td> {{ value }}/td>
 /tr>
 {% endfor %}
/table>

運行效果:
運行 Python 腳本,并在瀏覽器中輸入 URL http://localhost:5000/。

當點擊提交按鈕時,表單數據以 HTML 表格的形式呈現在 result.html 上。

9.2 Flask Cookies

Cookie以文本文件的形式存儲在客戶端的計算機上。其目的是記住和跟蹤與客戶使用相關的數據,以獲得更好的訪問者體驗和網站統計信息。

Request對象包含Cookie的屬性。它是所有cookie變量及其對應值的字典對象,客戶端已傳輸。除此之外,cookie還存儲其網站的到期時間,路徑和域名。
在Flask中,對cookie的處理步驟為:

1.設置cookie:
設置cookie,默認有效期是臨時cookie,瀏覽器關閉就失效
可以通過 max_age 設置有效期, 單位是秒

cookie_1 = request.cookies.get("chenshifeng")

2.獲取cookie
獲取cookie,通過request.cookies的方式, 返回的是一個字典,可以獲取字典里的相應的值

resp = make_response("del success") # 設置響應體
resp.delete_cookie("chenshifeng")

3.刪除cookie
這里的刪除只是讓cookie過期,并不是直接刪除cookie
刪除cookie,通過delete_cookie()的方式, 里面是cookie的名字

resp = make_response("del success") # 設置響應體
resp.delete_cookie("chenshifeng")

以下為Flask Cookies的簡單示例:

from flask import Flask, make_response, request

app = Flask(__name__)

@app.route("/set_cookies")
def set_cookie():
 resp = make_response("success")
 resp.set_cookie("chenshifeng", "shifengboy",max_age=3600)
 return resp

@app.route("/get_cookies")
def get_cookie():
 cookie_1 = request.cookies.get("chenshifeng") # 獲取名字為Itcast_1對應cookie的值
 return cookie_1

@app.route("/delete_cookies")
def delete_cookie():
 resp = make_response("del success")
 resp.delete_cookie("chenshifeng")

 return resp

if __name__ == '__main__':
 app.run(debug=True)

設置cookies

運行應用程序,在瀏覽器中輸入 127.0.0.1:5000/set_cookies 來設置cookies,設置 cookies 的輸出如下所示:

獲取cookie

根據視圖函數中相對應的路徑,輸入 http://127.0.0.1:5000/get_cookies ,讀回 cookies 的輸出如下所示:

刪除cookie

根據視圖函數中相對應的路徑,輸入 http://127.0.0.1:5000/delete_cookies ,刪除 cookies 的輸出如下所示:

注意刪除,只是讓 cookie 過期。

10.Flask 會話

與Cookie不同,Session(會話)數據存儲在服務器上。會話是客戶端登錄到服務器并注銷服務器的時間間隔。需要在該會話中保存的數據會存儲在服務器上的臨時目錄中。

為每個客戶端的會話分配會話ID。會話數據存儲在cookie的頂部,服務器以加密方式對其進行簽名。對于此加密,Flask應用程序需要一個定義的SECRET_KEY。

Session對象也是一個字典對象,包含會話變量和關聯值的鍵值對。

例如,要設置一個'username'會話變量,請使用以下語句:

Session['username'] = 'admin'

要釋放會話變量,請使用pop()方法。

session.pop('username', None)

演示代碼:

from flask import Flask, session, redirect, url_for, request

app = Flask(__name__)

app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj' # 確保設置應用程序的secret_key


@app.route('/')
def index():
 if 'username' in session:
 username = session['username']

 return '登錄用戶名是:' + username + 'br>' + \

  "b>a href = '/logout'>點擊這里注銷/a>/b>"

 return "您暫未登錄, br>a href = '/login'>/b>" + \

  "點擊這里登錄/b>/a>"


@app.route('/login', methods=['GET', 'POST'])
def login():
 if request.method == 'POST':
 session['username'] = request.form['username']

 return redirect(url_for('index'))

 return '''

 form action = "" method = "post">

 p>input type ="text" name ="username"/>/p>

 p>input type ="submit" value ="登錄"/>/p>

 /form>

 '''


@app.route('/logout')
def logout():
 # remove the username from the session if it is there

 session.pop('username', None)

 return redirect(url_for('index'))


if __name__ == '__main__':
 app.run(debug=True)

如何生成一個好的密鑰
生成隨機數的關鍵在于一個好的隨機種子,因此一個好的密鑰應當有足夠的隨機性。 操作系統可以有多種方式基于密碼隨機生成器來生成隨機數據。使用下面的命令 可以快捷的為 Flask.secret_key ( 或者 SECRET_KEY )生成值:
$ python -c 'import os; print(os.urandom(16))'
b'_5#y2L"F4Q8z\n\xec]/'

訪問http://127.0.0.1:5000/,只是提示用戶登錄,因為未設置會話變量'username'。

當用戶點擊登錄,瀏覽到“/login”login()視圖函數時,因為它是通過GET方法調用的,所以將打開一個登錄表單。

點擊登錄,通過POST方法將表單發送回'/login',現在會話變量已設置。應用程序重定向到'/'。此時會話變量'username'被找到。

應用程序還包含一個logout()視圖函數,它會彈出'username'會話變量。因此,'/' URL再次顯示開始頁面。

11.Flask 重定向和錯誤

Flask類有一個redirect()函數。調用時,它返回一個響應對象,并將用戶重定向到具有指定狀態代碼的另一個目標位置。

redirect()函數的原型如下:

Flask.redirect(location, statuscode, response)

在上述函數中:

  • location參數是應該重定向響應的URL。
  • statuscode發送到瀏覽器標頭,默認為302。
  • response參數用于實例化響應。

以下狀態代碼已標準化:

  • HTTP_300_MULTIPLE_CHOICES
  • HTTP_301_MOVED_PERMANENTLY
  • HTTP_302_FOUND
  • HTTP_303_SEE_OTHER
  • HTTP_304_NOT_MODIFIED
  • HTTP_305_USE_PROXY
  • HTTP_306_RESERVED
  • HTTP_307_TEMPORARY_REDIRECT

默認狀態代碼為302,表示'found'。
在以下示例中,redirect()函數用于在登錄嘗試失敗時再次顯示登錄頁面。

from flask import Flask, redirect, url_for, render_template, request

# Initialize the Flask application
app = Flask(__name__)


@app.route('/')
def index():
 return render_template('log_in.html')


@app.route('/login', methods=['POST', 'GET'])
def login():
 if request.method == 'POST' and request.form['username'] == 'admin':
  return redirect(url_for('success'))
 return redirect(url_for('index'))

@app.route('/success')
def success():
 return 'logged in successfully'

if __name__ == '__main__':
 app.run(debug=True)

下面給出的是 log_in.html的 HTML 腳本。

!DOCTYPE html>
html lang="en">
head>
 meta charset="UTF-8">
 title>Title/title>
/head>
body>
  form action = "http://localhost:5000/login" method = "POST">
   p>Enter Name:/p>
   p>input type = "text" name = "username" />/p>
   p>input type = "submit" value = "submit" />/p>
  /form>
/body>
/html>

Flask類具有帶有錯誤代碼的abort()函數。

Flask.abort(code)

Code參數采用以下值之一:

  • 400 - 用于錯誤請求
  • 401 - 用于未身份驗證的
  • 403 - Forbidden
  • 404 - 未找到
  • 406 - 表示不接受
  • 415 - 用于不支持的媒體類型
  • 429 - 請求過多

讓我們對上述代碼中的login()函數稍作更改。如果要顯示'Unauthurized'頁面,請將其替換為調用abort(401),而不是重新顯示登錄頁面。

from flask import Flask, redirect, url_for, render_template, request, abort

app = Flask(__name__)

@app.route('/')
def index():
 return render_template('log_in.html')

@app.route('/login', methods=['POST', 'GET'])
def login():
 if request.method == 'POST':
  if request.form['username'] == 'admin':
   return redirect(url_for('success'))
  else:
   abort(401)
 else:
  return redirect(url_for('index'))

@app.route('/success')
def success():
 return 'logged in successfully'

if __name__ == '__main__':
 app.run(debug=True)

運行,輸入非admin的用戶名,點擊提交

12. Flask 消息閃現

一個好的基于 GUI 的應用程序會向用戶提供有關交互的反饋。例如,桌面應用程序使用對話框或消息框,JavaScript 使用警報用于類似目的。

在 Flask Web 應用程序中生成這樣的信息性消息很容易。Flask 框架的閃現系統可以在一個視圖中創建消息,并在名為 next 的視圖函數中呈現它。

Flask 模塊包含 flash() 方法。它將消息傳遞給下一個請求,該請求通常是一個模板。

flash(message, category)

其中,

  • message 參數是要閃現的實際消息。
  • category 參數是可選的。它可以是“error”,“info”或“warning”。
  • 為了從會話中獲取消息,模板調用 get_flashed_messages()。

以下是一個完整的示例:

from flask import Flask, flash, redirect, render_template, \

  request, url_for

app = Flask(__name__)
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'

@app.route('/')
def index():
 return render_template('index.html')

@app.route('/login', methods=['GET', 'POST'])
def login():
 error = None
 if request.method == 'POST':
  if request.form['username'] != 'admin' or \

   request.form['password'] != 'secret':
   error = 'Invalid credentials'
  else:
   flash('You were successfully logged in')
   return redirect(url_for('index'))
 return render_template('login.html', error=error)

if __name__ == '__main__':
 app.run(debug=True)

以下是實現閃現的 layout.html 模板:

!doctype html>
title>My Application/title>
{% with messages = get_flashed_messages() %}
 {% if messages %}
 ul class=flashes>
 {% for message in messages %}
  li>{{ message }}/li>
 {% endfor %}
 /ul>
 {% endif %}
{% endwith %}
{% block body %}{% endblock %}

以下是繼承自 layout.html 的 index.html 模板:

{% block body %}
 h1>Overview/h1>
 p>Do you want to a href="{{ url_for('login') }}">log in?/a>
{% endblock %}

以下是同樣繼承自 layout.html 的 login.html 模板:

{% extends "layout.html" %}
{% block body %}
 h1>Login/h1>
 {% if error %}
 p class=error>strong>Error:/strong> {{ error }}
 {% endif %}
 form method=post>
 dl>
  dt>Username:
  dd>input type=text name=username value="{{
   request.form.username }}">
  dt>Password:
  dd>input type=password name=password>
 /dl>
 p>input type=submit value=Login>
 /form>
{% endblock %}

運行
首頁

登錄報錯頁

登錄成功頁

13. Flask 文件上傳

在 Flask 中處理文件上傳非常簡單。它需要一個 HTML 表單,其 ​enctype​ 屬性設置為'multipart/form-data​',將文件發布到 URL。URL 處理程序從 ​request.files[]​ 對象中提取文件,并將其保存到所需的位置。

每個上傳的文件首先會保存在服務器上的臨時位置,然后將其實際保存到它的最終位置。目標文件的名稱可以是硬編碼的,也可以從 ​request.files[file] ​對象的​filename​屬性中獲取。但是,建議使用 ​secure_filename()​ 函數獲取它的安全版本。
可以在 Flask 對象的配置設置中定義默認上傳文件夾的路徑和上傳文件的最大大小。

app.config[‘UPLOAD_FOLDER'] 定義上傳文件夾的路徑 app.config[‘MAX_CONTENT_LENGTH'] 指定要上傳的文件的最大大?。ㄒ宰止潪閱挝唬?/p>

以下代碼具有 ​'/upload' ​URL 規則,該規則在 templates 文件夾中顯示​ 'upload.html'​,以及 ​'/ upload-file' ​URL 規則,用于調用 ​uploader() ​函數處理上傳過程。
​'upload.html' ​有一個文件選擇器按鈕和一個提交按鈕。

html>
head>
 title>File Upload/title>
/head>
body>
 form action="http://localhost:5000/uploader" method="POST" enctype="multipart/form-data">
  input type="file" name="file" accept=".jpg,.png" />
  input type="submit" />
 /form>
/body>
/html>

以下是 Flask 應用程序的 Python 代碼。

from flask import Flask, render_template, request
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = '/Users/chenshifeng/upload/'

@app.route('/upload')
def upload_file():
 return render_template('upload.html')

@app.route('/uploader', methods = ['GET', 'POST'])
def uploader():
 if request.method == 'POST':
  f = request.files['file']
  f.save(os.path.join(app.config['UPLOAD_FOLDER'],secure_filename(f.filename)))
  return 'file uploaded successfully'

if __name__ == '__main__':
 app.run()

您將看到如下所示的界面。

選擇文件后,單擊提交。表單的​ post ​方法調用​ '/ upload_file'​ URL。底層函數 ​uploader()​ 執行保存操作。
上傳成功會顯示以下畫面:

上傳文件被放到/Users/chenshifeng/upload文件夾下:

14. Flask 擴展

Flask通常被稱為微框架,因為核心功能包括基于Werkzeug的WSGI和路由以及基于Jinja2的模板引擎。此外,Flask框架還支持cookie和會話,以及JSON,靜態文件等Web幫助程序。顯然,這不足以開發完整的Web應用程序。而Flask擴展就具備這樣的功能。Flask擴展為Flask框架提供了可擴展性。

有大量的Flask擴展可用。Flask擴展是一個Python模塊,它向Flask應用程序添加了特定類型的支持。Flask Extension Registry(Flask擴展注冊表)是一個可用的擴展目錄??梢酝ㄟ^pip實用程序下載所需的擴展名。

在本教程中,我們將討論以下重要的Flask擴展:

  • Flask Mail - 為Flask應用程序提供SMTP接口
  • Flask WTF - 添加WTForms的渲染和驗證
  • Flask SQLAlchemy - 為Flask應用程序添加SQLAlchemy支持
  • Flask Sijax - Sijax的接口 - Python/jQuery庫,使AJAX易于在Web應用程序中使用

每種類型的擴展通常提供有關其用法的大量文檔。由于擴展是一個Python模塊,因此需要導入它才能使用它。Flask擴展名通常命名為flask-foo。導入的操作如下:

from flask_foo import [class, function]

對于0.7以后的Flask版本,您還可以使用語法:

from flask.ext import foo

對于此用法,需要激活兼容性模塊。它可以通過運行flaskext_compat.py來安裝:

import flaskext_compat
flaskext_compat.activate()
from flask.ext import foo

14.1 Flask 郵件

務器建立簡單的接口變得非常容易。

首先,應該在pip實用程序的幫助下安裝Flask-Mail擴展。

pip install Flask-Mail

然后需要通過設置以下應用程序參數的值來配置Flask-Mail。

參數 描述
MAIL_SERVER 電子郵件服務器的名稱/IP地址
MAIL_PORT 使用的服務器的端口號
MAIL_USE_TLS 啟用/禁用傳輸安全層加密
MAIL_USE_SSL 啟用/禁用安全套接字層加密
MAIL_DEBUG 調試支持。默認值是Flask應用程序的調試狀態
MAIL_USERNAME 發件人的用戶名
MAIL_PASSWORD 發件人的密碼
MAIL_DEFAULT_SENDER 設置默認發件人
MAIL_MAX_EMAILS 設置要發送的最大郵件數
MAIL_SUPPRESS_SEND 如果app.testing設置為true,則發送被抑制
MAIL_ASCII_ATTACHMENTS 如果設置為true,則附加的文件名將轉換為ASCII

flask-mail模塊包含以下重要類的定義。

14.1.1 Mail類

它管理電子郵件消息傳遞需求。類構造函數采用以下形式:

flask-mail.Mail(app = None)

構造函數將Flask應用程序對象作為參數。
Mail類的方法:

方法 描述
send() 發送Message類對象的內容
connect() 打開與郵件主機的連接
send_message() 發送消息對象

14.1.2 Message類

它封裝了一封電子郵件。Message類構造函數有幾個參數:

flask-mail.Message(subject, recipients, body, html, sender, cc, bcc, reply-to, date, charset, extra_headers, mail_options,rcpt_options)

Message類方法:

attach() - 為郵件添加附件。此方法采用以下參數:

filename - 要附加的文件的名稱content_type - MIME類型的文件data - 原始文件數據處置 - 內容處置(如果有的話)。

add_recipient() - 向郵件添加另一個收件人

在下面的示例中,使用QQ郵箱服務的SMTP服務器用作Flask-Mail配置的MAIL_SERVER。

from flask import Flask
from flask_mail import Mail, Message

app =Flask(__name__)
mail=Mail(app)

app.config['MAIL_SERVER']='smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'xxxxx@qq.com'
app.config['MAIL_PASSWORD'] = 'xxxxxxxx'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
mail = Mail(app)

@app.route("/")
def index():
 msg = Message('Hello', sender = 'xxxxx@qq.com', recipients = ['xxxxx@qq.com'])
 msg.body = "Hello Flask message sent from Flask-Mail"
 mail.send(msg)
 return "Sent"

if __name__ == '__main__':
 app.run(debug = True)

15. Flask SQLAlchemy

步驟1 - 安裝Flask-SQLAlchemy擴展。

pip install flask-sqlalchemy

步驟2 - 您需要從此模塊導入SQLAlchemy類。

from flask_sqlalchemy import SQLAlchemy

步驟3 - 現在創建一個Flask應用程序對象并為要使用的數據庫設置URI。

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.sqlite3'

步驟4 - 然后使用應用程序對象作為參數創建SQLAlchemy類的對象。該對象包含用于ORM操作的輔助函數。它還提供了一個父Model類,使用它來聲明用戶定義的模型。在下面的代碼段中,創建了students模型。

db = SQLAlchemy(app)
class students(db.Model):
 id = db.Column('student_id', db.Integer, primary_key = True)
 name = db.Column(db.String(100))
 city = db.Column(db.String(50)) 
 addr = db.Column(db.String(200))
 pin = db.Column(db.String(10))

def __init__(self, name, city, addr,pin):
 self.name = name
 self.city = city
 self.addr = addr
 self.pin = pin

步驟5 - 要創建/使用URI中提及的數據庫,請運行create_all()方法。

db.create_all()

SQLAlchemy的Session對象管理ORM對象的所有持久性操作。
以下session方法執行CRUD操作:

  • db.session.add (模型對象) - 將記錄插入到映射表中
  • db.session.delete (模型對象) - 從表中刪除記錄
  • model.query.all() - 從表中檢索所有記錄(對應于SELECT查詢)。

您可以通過使用filter屬性將過濾器應用于檢索到的記錄集。例如,要在學生表中檢索city ='Hyderabad'的記錄,請使用以下語句:

Students.query.filter_by(city = 'Hyderabad').all()

有了這么多的背景,現在我們將為我們的應用程序提供視圖函數來添加學生數據。

應用程序的入口點是綁定到'/' URL的show_all()函數。學生表的記錄集作為參數發送到HTML模板。模板中的服務器端代碼以HTML表格形式呈現記錄。

@app.route('/')
def show_all():
 return render_template('show_all.html', students = students.query.all() )

模板('show_all.html')的HTML腳本如下:

!DOCTYPE html>
html lang = "en">
 head>/head>
 body>
  
  h3>
   a href = "{{ url_for('show_all') }}">Comments - Flask 
   SQLAlchemy example/a>
  /h3>
  
  hr/>
  {%- for message in get_flashed_messages() %}
   {{ message }}
  {%- endfor %}
		
  h3>Students (a href = "{{ url_for('new') }}">Add Student
   /a>)/h3>
  
  table>
   thead>
   tr>
    th>Name/th>
    th>City/th>
    th>Address/th>
    th>Pin/th>
   /tr>
   /thead>
   
   tbody>
   {% for student in students %}
    tr>
     td>{{ student.name }}/td>
     td>{{ student.city }}/td>
     td>{{ student.addr }}/td>
     td>{{ student.pin }}/td>
    /tr>
   {% endfor %}
   /tbody>
  /table>
  
 /body>
/html>

上述網頁包含指向'/ new' URL映射new()函數的超鏈接。單擊時,將打開“學生信息”表單。 數據在 POST方法中發布到相同的URL。
new.html

!DOCTYPE html>
html>
 body>
 
  h3>Students - Flask SQLAlchemy example/h3>
  hr/>
  
  {%- for category, message in get_flashed_messages(with_categories = true) %}
   div class = "alert alert-danger">
   {{ message }}
   /div>
  {%- endfor %}
  
  form action = "{{ request.path }}" method = "post">
   label for = "name">Name/label>br>
   input type = "text" name = "name" placeholder = "Name" />br>
   label for = "email">City/label>br>
   input type = "text" name = "city" placeholder = "city" />br>
   label for = "addr">addr/label>br>
   textarea name = "addr" placeholder = "addr">/textarea>br>
   label for = "PIN">PINCODE/label>br>
   input type = "text" name = "pin" placeholder = "pin" />br>
   input type = "submit" value = "Submit" />
  /form>
  
 /body>
/html>

當http方法被檢測為POST時,表單數據被添加到學生表中,并且應用返回到顯示添加數據的主頁。

@app.route('/new', methods = ['GET', 'POST'])
def new():
 if request.method == 'POST':
  if not request.form['name'] or not request.form['city'] or not request.form['addr']:
   flash('Please enter all the fields', 'error')
  else:
   student = students(request.form['name'], request.form['city'],
   request.form['addr'], request.form['pin'])
   
   db.session.add(student)
   db.session.commit()
   
   flash('Record was successfully added')
   return redirect(url_for('show_all'))
 return render_template('new.html')

下面給出了應用程序(app.py)的完整代碼。

from flask import Flask, request, flash, url_for, redirect, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.sqlite3'
app.config['SECRET_KEY'] = "random string"

db = SQLAlchemy(app)


class students(db.Model):
 id = db.Column('student_id', db.Integer, primary_key=True)
 name = db.Column(db.String(100))
 city = db.Column(db.String(50))
 addr = db.Column(db.String(200))
 pin = db.Column(db.String(10))


 def __init__(self, name, city, addr, pin):
  self.name = name
  self.city = city
  self.addr = addr
  self.pin = pin


@app.route('/')
def show_all():
 return render_template('show_all.html', students=students.query.all())


@app.route('/new', methods=['GET', 'POST'])
def new():
 if request.method == 'POST':
  if not request.form['name'] or not request.form['city'] or not request.form['addr']:
   flash('Please enter all the fields', 'error')
  else:
   student = students(request.form['name'], request.form['city'],
        request.form['addr'], request.form['pin'])

   db.session.add(student)
   db.session.commit()
   flash('Record was successfully added')
   return redirect(url_for('show_all'))
 return render_template('new.html')


if __name__ == '__main__':
 db.create_all()
 app.run(debug=True)

首頁

錯誤頁:

提交成功頁:

本文參考:https://www.w3cschool.cn/flask/

到此這篇關于python flask框架詳解的文章就介紹到這了,更多相關python flask框架內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python flask框架快速入門
  • 利用python實現后端寫網頁(flask框架)
  • python的flask框架難學嗎
  • Python flask框架實現瀏覽器點擊自定義跳轉頁面
  • Python flask框架端口失效解決方案
  • Python flask框架如何顯示圖像到web頁面
  • python框架flask表單實現詳解
  • Flask框架實現的前端RSA加密與后端Python解密功能詳解
  • Python flask框架post接口調用示例
  • python flask框架實現重定向功能示例
  • python框架flask知識總結

標簽:西寧 石家莊 梅州 文山 懷化 浙江 昆明 錫林郭勒盟

巨人網絡通訊聲明:本文標題《python flask框架詳解》,本文關鍵詞  python,flask,框架,詳解,python,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python flask框架詳解》相關的同類信息!
  • 本頁收集關于python flask框架詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 上海腾迈机械有限公司| 烟台东恒机械有限公司| 洛阳中德重工有限公司| 凯达机械制造有限公司| 宝鸡 机械有限公司| 郑州矿山机械有限公司| 东方传动机械有限公司| 河北永洋钢铁有限公司| 江苏宏达起重电机有限公司| 中山市凌宇机械有限公司| 河南钢铁贸易有限公司| 昌邑市机械有限公司| 南丰 机械有限公司| 东莞市旭田包装机械有限公司| 常州迈腾机械有限公司| 河北双天机械制造有限公司| 大连起重机有限公司| 杭州天扬机械有限公司| 粮油机械设备有限公司| 江南机械制造有限公司| 丰精密机械有限公司| 重庆信鼎精密机械有限公司 | 上海机械装备有限公司| 厦门国桥机械有限公司| 山东省机械有限公司| 济南卓恒膨化机械有限公司| 广东长征机械有限公司| 上海文胜机械设备有限公司| 苏州博扬机械有限公司| 广州起重机械有限公司| 青岛泰新机械有限公司| 杭州灵达机械有限公司| 全精密机械有限公司| 上海金纬挤出机械制造有限公司 | 济宁青科机械有限公司| 西安海焱机械有限公司| 杭州天杨机械有限公司| 天津市申成包装机械有限公司| 山东煤矿机械有限公司| 山东鲁工机械有限公司| 浙江流遍机械润滑有限公司| 郑州企鹅粮油机械有限公司| 浙江华昌液压机械有限公司| 大连红日机械有限公司| 恩倍力机械有限公司| 浙江瑞安机械有限公司| 芜湖富鑫钢铁有限公司| 韶瑞重工有限公司官网| 潍坊元鸣机械有限公司| 杭州富朗机械有限公司| 沈阳西城钢铁有限公司| 江苏金梧机械有限公司| 济南恒迪机械有限公司| 山东利达工程机械有限公司 | 宁波敏达机械有限公司| 宁波博日机械有限公司| 山东华珠机械有限公司| 海宁弘德机械有限公司| 江淮重工机械有限公司| 浙江荣德机械有限公司| 杭州三共机械有限公司| 四川沱江起重机有限公司| 威海印刷机械有限公司| 宝力机械有限公司招聘| 徐州福曼随车起重机有限公司| 北京洛克机械有限公司| 韩通船舶重工有限公司| 山东莱工机械制造有限公司| 陕西 机械设备有限公司| 山东建筑机械有限公司| 大连东拓工程机械制造有限公司| 广东南桂起重机械有限公司| 嘉诚机械制造有限公司| 济南盛润机械有限公司| 佐竹机械苏州有限公司| 洛阳震动机械有限公司| 广东恒联食品机械有限公司| 东台市机械有限公司| 衢州 机械有限公司| 武汉钢铁有限公司疫情| 东莞市鼎祥通用机械设备有限公司| 威海威力起重有限公司| 东莞市鑫国丰机械有限公司| 青岛张氏机械有限公司| 苏州包装机械有限公司| 苏州凯威塑料机械有限公司| 江西凯奥机械有限公司| 张家港机械有限公司| 山东银鹰炊事机械有限公司 | 冶金机械制造有限公司| 上海 精密机械有限公司| 液压机械制造有限公司| 陕西鑫钢机械有限公司| 东莞宏彰机械有限公司| 河南省黄河防爆起重机有限公司| 安徽国梁机械设备有限公司| 佐竹机械苏州有限公司| 起帆电缆有限公司上市| 河南万泰机械有限公司| 富阳 机械有限公司| 中核华兴机械化工程有限公司| 宁波佳利来机械制造有限公司| 诸城市中天机械有限公司| 江苏东禾机械有限公司| 长沙众宇机械有限公司| 南通丰威机械有限公司| 山东矿山机械有限公司| 滨州市机械有限公司| 江门携成机械有限公司怎样| 山东广富钢铁有限公司| 蓬莱万寿机械有限公司| 无锡锡科机械制造有限公司| 南京凯友橡塑机械有限公司| 上海盛普机械制造有限公司| 天津润机械有限公司| 苏州三维精密机械有限公司| 贵阳长乐钢铁有限公司| 浙江中兴机械制造有限公司| 四川望锦机械有限公司| 江苏仁达机械有限公司| 中山弘立机械有限公司| 河北钢铁矿业有限公司| 中海福陆重工有限公司| 东莞太星机械有限公司| 威海威力起重有限公司| 东莞市机械设备有限公司| 重庆辉昌机械设备有限公司| 恩倍力机械有限公司| 上海申越包装机械制造有限公司| 张家港市饮料机械有限公司| 杭州铁正机械有限公司| 宁波博大机械有限公司| 浙江吉隆机械有限公司| 华丽木工机械有限公司| 青岛液压机械有限公司 | 山东临工机械有限公司| 济南捷迈数控机械有限公司| 苏州联又机械有限公司| 上海上丰机械有限公司| 西安中大机械有限公司| 江苏凯凯机械有限公司| 力华机械设备有限公司| 长沙远洋机械制造有限公司 | 东莞市数控机械有限公司| 宜兴市华鼎机械有限公司| 佛山市劲雄机械有限公司| 河南省机械有限公司| 广东正力精密机械有限公司| 汤姆包装机械有限公司| 上海春田机械有限公司| 潍坊元鸣机械有限公司| 成都康博机械有限公司| 华世丹机械有限公司| 马长江钢铁有限公司| 唐山新宝泰钢铁有限公司| 济南捷迈数控机械有限公司| 泰州市机械制造有限公司| 南通奥普机械工程有限公司| 山东源泉机械有限公司| 山东云光钢铁有限公司| 合肥中达机械制造有限公司| 苏州动力机械有限公司| 浙江海天机械有限公司| 宁波博信机械制造有限公司| 上海集嘉机械有限公司| 长沙起重机厂有限公司| 上海沪临重工有限公司| 江阴市化工机械有限公司| 鑫华机械制造有限公司| 武汉吕工机械有限公司| 河北大恒重型机械有限公司| 山东伊莱特重工有限公司| 浙江乾坤机械有限公司| 摩德娜机械有限公司| 杭州双金机械有限公司| 台州嘉瑞机械有限公司| 郑州一本机械设备有限公司| 新疆汇合钢铁有限公司| 云南中天机械有限公司| 郑州江科重工机械有限公司| 唐山新宝泰钢铁有限公司| 宁波力源机械有限公司| 德州锦冠钢铁有限公司| 河南重型机械有限公司| 河北机械设备有限公司| 中山 机械有限公司| 常州海杰冶金机械制造有限公司| 新进精密机械苏州有限公司| 青岛山森机械有限公司| 杭州华兴机械有限公司| 江苏恒悦机械有限公司| 沂南中天机械有限公司| 广州泓锋食品机械有限公司| 深圳新添润彩印机械设备有限公司| 江苏别具匠心机械设备有限公司| 上海斯特克沃森重工设备有限公司| 玉环宝捷机械有限公司| 河南永康机械有限公司| 浙江昌亨机械有限公司| 宁波旭升机械有限公司| 鞍山矿山机械有限公司| 上海国翔包装机械制造有限公司| 上海佳成服装机械有限公司| 河南华北起重吊钩有限公司| 郑州华隆机械制造有限公司| 无锡工程机械有限公司| 佛山市创宝包装机械有限公司| 德清章盟机械设备有限公司| 宜春江特机械传动有限公司| 广州汉达机械有限公司| 山东战尔机械有限公司| 山东腾机械有限公司| 天津安东石油机械制造有限公司| 昆山乙盛机械工业有限公司| 济南北斗星机械设备有限公司| 河北普阳钢铁有限公司| 农业机械设备有限公司| 江苏海特尔机械有限公司| 保定向阳航空精密机械有限公司 | 潍坊润鑫机械有限公司| 天津润澍机械有限公司| 重庆明天机械有限公司| 东莞市博志达工程机械制造有限公司| 云南德胜钢铁有限公司| 启益电器材机械有限公司招聘| 潍坊华全动力机械有限公司| 诸城市安泰机械有限公司| 福建起然燃气设备有限公司| 郑州市机械有限公司| 浙江上石化机械有限公司| 山西重工机械有限公司| 西安科迅机械制造有限公司| 徐州彭贝机械制造有限公司| 秦皇岛秦冶重工有限公司| 源通机械设备有限公司| 浙江方邦机械有限公司| 天津瑞星传动机械有限公司| 重庆川口机械有限公司| 禹城市华普机械设备有限公司 | 宁波辉旺机械有限公司| 安微博达重工有限公司| 长沙中传机械有限公司| 洛阳钢峰机械有限公司| 盐城丰炜机械制造有限公司| 湖州天和机械有限公司| 三一国杰机械有限公司| 禹城通裕新能源机械铸造有限公司| 重庆渝辉机械有限公司| 徐州丰展机械有限公司| 东莞市恒生机械制造有限公司| 江苏登福机械有限公司| 青岛唐宇机械制造有限公司| 苏州一工机械有限公司| 中意合资 威尼托机械有限公司| 上海京悦机械有限公司| 北京工程机械有限公司| 南京化工机械有限公司| 河南兴远起重机有限公司| 智能机械制造有限公司| 博路威机械江苏有限公司| 一帆机械设备有限公司| 鼎龙机械制造有限公司| 国机重工洛阳有限公司| 湖北江重机械制造有限公司| 深圳市塑胶机械有限公司| 徐州中嘉工程机械有限公司| 建湖县液压机械有限公司| 常州聚武机械有限公司| 江苏金鹰流体机械有限公司| 淮安华辉机械设备有限公司| 江西鑫通机械有限公司| 济宁工程机械有限公司| 肇庆市机械有限公司| 杭州联德机械有限公司| 东莞市源机械有限公司| 山西海威钢铁有限公司| 郑州一帆机械设备有限公司| 福建海龙机械有限公司| 扬州诺亚机械有限公司| 沈阳友维机械有限公司| 上海液压机械有限公司| 烟台鑫海矿山机械有限公司| 济南耐刻机械设备有限公司| 江阴华西钢铁有限公司| 郑州市同鼎机械设备有限公司| 温州名瑞机械有限公司| 安徽鸿泰钢铁有限公司| 宁波海伯精密机械制造有限公司 | 常州小松工程机械有限公司招聘 | 广州华劲机械有限公司| 淮安天宇机械有限公司| 郑州鼎盛机械有限公司| 章丘市机械有限公司| 常州市工程机械有限公司| 合肥华运机械制造有限公司 | 山东业机械有限公司| 经纬纺织机械有限公司| 温州科迪机械有限公司| 河北冠能石油机械制造有限公司| 济南大彤机械设备有限公司| 顺兴机械制造有限公司| 山东枭隆机械有限公司| 烟台飞达机械设备有限公司| 天赛塑胶机械有限公司| 江苏卫东机械有限公司| 大唐机械制造有限公司| 华劲机械制造有限公司| 扬州扬工机械有限公司| 永兴机械设备有限公司| 上海涟恒精密机械有限公司| 无锡双益精密机械有限公司 | 江苏宇达机械有限公司| 河北昭达机械有限公司| 无锡华迪机械设备有限公司| 昆山奥德机械有限公司| 山东莱德机械有限公司| 广州精密机械有限公司| 威海欧东机械有限公司骗局| 上海化工机械厂有限公司| 广州易鸿机械有限公司| 上海益达机械有限公司| 抚顺机械设备制造有限公司| 无锡橡塑机械有限公司| 青岛诺恩包装机械有限公司| 无锡东元精密机械有限公司| 鸿兴织带机械有限公司| 河南机械设备有限公司| 塑料包装机械有限公司| 深圳市铭利达精密机械有限公司| 泉州群峰机械有限公司| 上海神威机械有限公司| 泊头市环保机械有限公司| 格润德机械制造有限公司| 上海宏铭纺织机械有限公司| 成都富江机械制造有限公司| 无锡精派机械有限公司| 成都万欣邦达机械制造有限公司| 山东同力达智能机械有限公司 | 邹平县宏鑫机械制造有限公司| 长春泰盟机械制造有限公司| 卓郎智能机械有限公司| 马鞍山 机械有限公司| 洛阳耿力机械有限公司| 徐州工程机械有限公司| 青岛迪恩机械制造有限公司| 浙江起重机有限公司| 宁波博大机械有限公司| 上海紫永机械有限公司| 浙江欧森机械有限公司| 南京阿特拉斯机械设备有限公司| 辽宁天一重工有限公司| 江苏大津重工有限公司| 韶瑞重工有限公司官网| 泉州力泉机械有限公司| 高峰机械工业有限公司| 安徽精密机械有限公司| 深圳龙润彩印机械设备有限公司| 宁波星箭航天机械有限公司| 常州市雪龙机械制造有限公司| 粮油机械设备有限公司| 南通市通州区三槐机械制造有限公司| 山东明天机械有限公司| 常州起重机械有限公司| 德州力维机械有限公司| 昆明 机械 有限公司| 泰安恒大机械有限公司| 瑞安市包装机械有限公司| 江阴中立机械工业有限公司| 宝鸡市机械有限公司| 济宁五创机械有限公司| 太仓悦凯精密机械有限公司| 徐州二川机械有限公司| 哈克农业机械装备制造有限公司 | 上海诚淘机械有限公司| 苏州市丰科精密机械有限公司 | 上海 输送机械有限公司| 江西柳工机械设备有限公司| 苏州包装机械有限公司| 自动化机械有限公司| 苏州苏鹰机械制造有限公司| 浙江天鸿传动机械有限公司| 山东高机工业机械有限公司| 江苏腾通包装机械有限公司| 河南安普包装机械制造有限公司| 上海机械实业有限公司| 鼎业机械设备有限公司| 东莞凯格精密机械有限公司| 大江重工焦作有限公司| 浙江汉达机械有限公司| 厦门黎明机械有限公司| 广东万联包装机械有限公司 | 湘东化工机械有限公司| 江苏省机械有限公司| 济南天业工程机械有限公司| 四川盛和机械设备有限公司| 河南省力神机械有限公司| 上海慕鼎机械设备有限公司| 金华市 机械制造有限公司| 兖矿大陆机械有限公司| 昆山富邦机械有限公司| 安徽远鸿机械自动化有限公司 | 陕西通运机械有限公司| 河南省起重机有限公司| 烟台鑫海矿山机械有限公司| 菏泽瑞康机械有限公司| 江阴韩一钢铁有限公司| 潍坊天宇机械有限公司| 杭州中力机械设备有限公司| 翼虎动力机械有限公司| 威海欧东机械有限公司| 青岛仕诚塑料机械有限公司| 曲阜志成机械有限公司| 温州工程机械有限公司| 常州常矿起重机械有限公司 | 河北钢铁矿业有限公司| 新华机械制造有限公司| 燕拓航(北京)真空机械有限公司| 广州工友起重设备制造有限公司| 宁波华骏机械有限公司| 潍坊市贝特机械有限公司| 上海全驰机械有限公司| 安徽国梁机械设备有限公司 | 南通国盛精密机械有限公司| 腾飞机械有限公司地址| 上海宝闽钢铁有限公司| 宁波威恩精密机械有限公司| 湖南汇杰机械设备有限公司| 东莞市天周机械有限公司| 扬州市机械制造有限公司| 上海德机械设备有限公司| 河南万杰食品机械有限公司| 上海捷舟工程机械有限公司| 威海隆发机械有限公司| 泰安古河机械有限公司| 安徽方圆机械有限公司| 华东油压机械制造有限公司| 山东贝特起重机有限公司| 河南 工程机械有限公司| 盐城 机械 有限公司| 徐工随车起重机有限公司| 上海纽荷兰农业机械有限公司| 固耐重工苏州有限公司| 广州大圆机械设备有限公司| 嘉善精密机械有限公司| 江苏普格机械有限公司| 宁波民盛机械有限公司| 上海三都机械有限公司| 常州道铖精密机械有限公司| 宁波金亿精密机械有限公司| 河南省中原起重机械有限公司| 新乡市新久振动机械有限公司| 洛阳塑电机械有限公司| 郑州东方重型机械有限公司| 深圳市荣德机械设备有限公司| 玉环中本机械有限公司| 苏州盛友机械有限公司| 三鑫重工机械有限公司| 西安机械设备有限公司| 河南豫弘重型机械有限公司| 利星行机械昆山有限公司| 桐乡 机械有限公司| 南京贝隆齐机械有限公司| 郑州 机械有限公司| 无锡市康晖机械制造有限公司 | 湖南一田农业机械有限公司| 宁波五峰机械有限公司| 丰润区钢铁有限公司| 山西贝斯特机械制造有限公司| 石家庄嘉祥精密机械有限公司| 苏州信能精密机械有限公司| 成都望锦机械有限公司| 徐州恒辉编织机械有限公司| 张家港市机械有限公司| 重庆 机械配件有限公司| 广州冠浩机械设备有限公司| 浙江上石化机械有限公司| 新乡黄氏食品机械有限公司 | 夹江水工机械有限公司| 东莞信易电热机械有限公司| 深圳市鑫宏伟机械设备有限公司 | 江苏冠宇机械设备制造有限公司| 东莞市鑫国丰机械有限公司| 三一汽车起重机械有限公司| 上海大松机械有限公司| 无锡械锐机械有限公司| 郑州红星机械有限公司| 有限公司 印刷机械| 烟台万事达金属机械有限公司| 农业机械设备有限公司| 广州新欧机械有限公司| 徐工重型机械有限公司| 湖州市湖州机械有限公司| 上海杉野机械有限公司| 杭州天杨机械有限公司| 渤海重工管道有限公司| 常州步速者机械制造有限公司 | 张家港市亿利机械有限公司| 天津亨旺机械有限公司| 济南焊达机械有限公司| 山东同洲机械制造有限公司 | 华鑫机械制造有限公司| 长沙众城机械有限公司| 盐城丰炜机械制造有限公司| 利星行机械有限公司| 锋劲威机械有限公司| 德枫丹青岛机械有限公司招聘| 大连起重机有限公司| 常州市日中精密机械有限公司| 淄博 机械设备有限公司| 咸阳 机械制造有限公司| 昆山苏隆机械制造有限公司| 福清市机械有限公司| 柳州起重机器有限公司| 合肥春华起重机械有限公司| 重庆正格农业机械有限公司| 河北卓昊机械制造有限公司| 山东临沂机械有限公司| 矿山机械设备有限公司| 江苏博森机械制造有限公司| 东莞市泽冠机械有限公司| 上海起重机械有限公司| 苏州荣业机械有限公司| 上海紫宏机械有限公司| 大连意美机械有限公司| 宁波延晟机械有限公司| 兰州华诚石化机械制造有限公司| 长沙三一重工有限公司| 山东萨丁重工有限公司| 济南赛信机械有限公司| 湖南博长钢铁贸易有限公司| 江苏江河机械制造有限公司| 迪砂常州机械有限公司| 浙江中兴机械制造有限公司| 广州闽欣机械设备有限公司| 天津石油机械有限公司| 河南省起重机有限公司| 苏州工业园区机械有限公司| 成机械设备有限公司| 东营嘉信机械有限公司| 江苏佳力起重机械制造有限公司| 东莞市力华机械设备有限公司 | 西安中大机械有限公司| 青岛博朗特机械设备有限公司| 德州仁信印染机械有限公司| 泰安东岳重工有限公司| 重庆龙文机械设备有限公司| 泰安恒大机械有限公司| 南方路面机械有限公司| 安特精密机械有限公司| 无锡通用机械有限公司| 重庆太强机械有限公司| 苏州牧天动力机械有限公司| 泰州市机械有限公司| 宣城 机械 有限公司| 青岛农业机械有限公司| 张家港市港丰机械有限公司| 禹城通裕新能源机械铸造有限公司 | 安徽机械设备有限公司| 苏州金韦尔机械有限公司| 黑龙江建龙钢铁有限公司| 重庆足航钢铁有限公司| 海精密机械有限公司| 柳州市宏华机械有限公司| 亚龙机械制造有限公司| 佛山柯田包装机械有限公司 | 江阴力达机械有限公司| 泉州佳升机械有限公司| 恒联食品机械有限公司| 华泰机械制造有限公司| 温州迈高机械有限公司| 西门子机械传动 天津 有限公司| 东莞市雅康精密机械有限公司| 无锡市浦尚精密机械有限公司| 广州东昻机械有限公司| 无锡九明机械有限公司| 福建泉成机械有限公司| 扬州液压机械有限公司| 广州市勤达机械设备有限公司| 新乡市矿山起重机械有限公司| 郑州三和水工机械有限公司| 上海法德机械设备有限公司| 常州光明包装机械有限公司| 南京恩梯恩精密机械有限公司 | 中铁重工有限公司武汉| 杭州海铭钢铁有限公司| 聚力特机械有限公司| 盐城市机械有限公司| 洛阳卡瑞起重设备有限公司| 天津宏大纺织机械有限公司| 天赛塑胶机械有限公司| 广州恒星冷冻机械制造有限公司 | 唐山利军机械有限公司| 河北 机械 有限公司| 上海矿山机械有限公司| 河南万杰食品机械有限公司| 浙江天风塑料机械有限公司| 和和机械(张家港)有限公司| 金源机械制造有限公司| 唐山兴隆钢铁有限公司| 上海松铭传动机械有限公司| 东莞信易电热机械有限公司 | 华东油压机械制造有限公司 | 济宁立派工程机械有限公司| 阿尔法起重机有限公司| 浙江五一机械有限公司| 全精密机械有限公司| 鸿兴织带机械有限公司| 郑州世纪精信机械制造有限公司| 山东济宁机械有限公司| 高臻机械机械有限公司| 联程机械宁波有限公司| 石家庄煤矿机械有限公司| 郑州鼎盛机械有限公司| 浙江嘉元机械制造有限公司| 三门峡机械有限公司| 义乌机械设备有限公司| 浙江兄弟包装机械有限公司| 青岛凯机械有限公司| 无锡伊诺特石化机械设备有限公司| 山东万力起重机械有限公司| 青岛迪恩机械制造有限公司| 河南龙昌机械制造有限公司| 武汉工程机械有限公司| 菏泽瑞康机械有限公司| 徐州天地重型机械制造有限公司| 济南建设机械有限公司| 山东金成机械有限公司| 张家港市通惠化工机械有限公司| 成都恒飞机械有限公司| 诸暨市 机械有限公司| 勃农兴达机械有限公司| 苏州锐豪机械制造有限公司| 广州市 包装机械有限公司| 新乡 筛分机械有限公司| 无锡机械设备有限公司| 山东利丰机械有限公司| 百赞精密机械有限公司| 江苏久盛机械设备有限公司| 河北燕兴机械有限公司| 金属制品有限公司起名| 济南光先数控机械有限公司| 宁波力劲机械有限公司| 大连 工程机械有限公司| 上海升立机械制造有限公司| 宁波宁塑机械有限公司| 江西九江萍钢钢铁有限公司| 济南恒迪机械有限公司| 东台富康机械有限公司| 阜新恒泰机械有限公司| 北京复盛机械有限公司| 烟台浩阳机械有限公司| 昆山奥德机械有限公司| 有限公司发起人协议| 上海捷舟工程机械有限公司| 苏州联屹精密机械有限公司| 无锡佳特机械有限公司| 德阳 机械有限公司| 天工工程机械有限公司| 浙江青山钢铁有限公司| 无锡环保机械有限公司| 环保设备机械有限公司| 东莞市源机械有限公司| 上海 机械设备有限公司| 金韦尔机械有限公司| 扬州禹笑水利机械有限公司| 章丘大成机械有限公司| 江苏东禾机械有限公司| 佛宇重工实业有限公司| 苏州同鑫鸿精密机械有限公司| 尤工机械设备有限公司| 北京道森起点信息技术有限公司| 广州旭众食品机械有限公司| 无锡双麦机械有限公司| 恩倍力机械有限公司| 深圳中施机械设备有限公司| 天津润机械有限公司| 上海机械加工有限公司| 温州科迪机械有限公司| 洛阳路通重工机械有限公司| 深圳新劲力机械有限公司| 扬州鼎隆机械有限公司| 盐城机械设备有限公司| 廊坊百冠包装机械有限公司| 鑫华机械制造有限公司| 电子有限公司起名大全| 石家庄米兹机械设备有限公司| 新乡市法斯特机械有限公司| 启瑞机械广州有限公司| 濮阳机械制造有限公司| 深圳市德机械有限公司| 济南腾越机械制造有限公司| 上海长江服装机械有限公司| 苏州仁成包装机械有限公司| 信息技术有限公司起名| 山西重工机械有限公司| 沧州卓鑫机械设备制造有限公司 | 江苏力源液压机械有限公司 | 永川海通机械有限公司| 工程机械配件有限公司| 中山艾能机械有限公司| 苏州德扬数控机械有限公司| 迁安荣信钢铁有限公司| 上海沛愉机械制造有限公司| 机械有限公司怎么注册| 浙江 料机械有限公司| 上海昱钢包装机械有限公司| 宁波华强机械有限公司| 南京包装机械有限公司| 无锡好麦机械有限公司| 浙江引春机械有限公司| 温州瑞达机械有限公司| 佳友精密机械有限公司| 安徽联塔盛通机械制造有限公司| 洛阳天宇机械制造有限公司| 安徽精密机械有限公司| 大京机械山东有限公司| 上海三景机械有限公司| 南通 机械 有限公司| 鑫达机械制造有限公司| 烟台 机械设备有限公司| 广州力丰机械有限公司| 招远市矿山机械有限公司| 海顺机械台州有限公司| 八达重工机械有限公司| 翰林机械制造有限公司| 襄阳通威机械有限公司| 佛山顺德区机械有限公司| 吉林省起点医药有限公司| 苏州辽鞍机械有限公司| 上海诺 机械有限公司| 重庆正格农业机械有限公司| 业精机械制造有限公司| 潍坊中迪机械有限公司| 天津天丰钢铁有限公司| 江阴新迪机械有限公司| 徐州福曼随车起重机有限公司| 江阴市勤业化工机械有限公司| 浙江科尔博机械有限公司| 博阳机械制造有限公司| 福州四兴机械有限公司| 湖北创联重工有限公司| 宁波裕民机械工业有限公司 | 邢台市振成机械有限公司| 天宇机械制造有限公司| 东莞高盟机械有限公司| 沈阳奎鑫钢铁有限公司| 温州印刷机械有限公司| 台一精工机械有限公司| 定州市机械有限公司| 安阳嘉和机械有限公司| 昆山翔固机械有限公司| 重庆辉昌机械设备有限公司| 新乡市长城机械有限公司| 郑州双狮粮油机械有限公司| 苏州爱恩机械有限公司| 上海机械施工有限公司| 无锡森本精密机械有限公司| 汤阴升达机械有限公司| 河南真牛起重机有限公司| 天津英德诺机械设备有限公司 | 齐齐哈尔机械有限公司| 浙江荣亿精密机械有限公司| 昆山铁生机械有限公司| 上海实机械有限公司| 东莞市五全机械有限公司| 机械设备有限公司经营范围| 镇江宏泰钢铁有限公司| 山矿机械设备有限公司| 烟台金鹏矿业机械有限公司| 湖南星邦重工有限公司| 东营程祥机械有限公司| 安丰钢铁有限公司电话| 新乡市东源机械有限公司| 上海祝融起重机械有限公司 | 力源液压机械有限公司| 河南兴邦重工机器有限公司| 宁波博大机械有限公司| 苏州恒升机械有限公司| 浙江云广机械制造有限公司| 上海涵延机械有限公司| 广西千里通机械设备有限公司| 山东冠华重工机械有限公司| 雷州雷宝机械有限公司| 冠龙阀门机械有限公司| 浙江华安机械有限公司| 苏州斗山工程机械有限公司| 泰上机械设备有限公司| 汇大机械制造有限公司| 重庆华渝重工机电有限公司| 广州市佳速精密机械有限公司| 泰安东岳重工有限公司| 山东吉恒机械有限公司| 瑞达机械设备有限公司| 杭州起重吊装有限公司| 青岛现代机械有限公司| 威海新元化工机械有限公司| 德州液压机械有限公司| 山东正阳机械有限公司| 佛山市柯田包装机械有限公司| 上海星贝包装机械有限公司| 潍坊精诺机械有限公司| 宁夏瑞光机械有限公司| 武汉精密机械有限公司| 陕西鑫钢机械有限公司| 上海东泷重型机械有限公司| 东莞市亚龙玻璃机械有限公司| 济宁高扬工程机械有限公司| 江苏熔盛重工有限公司| 保定向阳航空精密机械有限公司 | 苏州擎邦机械有限公司| 四平红嘴钢铁有限公司| 佛山松川机械设备有限公司| 杭州玻璃机械有限公司| 广州机械有限公司招聘| 纸箱机械设备有限公司| 青州汇众机械有限公司| 杭州杭重机械有限公司| 杭州友高精密机械有限公司| 苏州仁成包装机械有限公司| 山东山推工程机械结构件有限公司 | 江阴惠尔信机械有限公司| 浙江中意机械有限公司| 浙江双联机械有限公司| 惠州市机械有限公司| 绵阳科睿机械有限公司| 东莞港重机械有限公司| 广东先达数控机械有限公司| 山西万泽锦达机械制造有限公司| 上海众冠食品机械有限公司| 江苏华光双顺机械制造有限公司 | 无锡佳特机械有限公司| 佛山市松可包装机械有限公司| 天津德尚机械有限公司| 郑州华龙机械工程有限公司| 和本精密机械有限公司| 新乡市大汉振动机械有限公司| 南京阿特拉斯机械设备有限公司| 武汉千里马工程机械有限公司| 湖南工程机械有限公司| 龙口富元机械有限公司| 福州 机械制造有限公司| 郑州正科机械有限公司| 光华机械制造有限公司| 南通虹波机械有限公司| 济南 机械有限公司| 萨克米机械有限公司| 南京钢铁联合有限公司| 无锡森本精密机械有限公司| 江阴市华科机械设备有限公司| 永川海通机械有限公司| 无锡双益精密机械有限公司| 宜都大一重工有限公司| 中山市机械有限公司| 上海臣轩机械有限公司| 安徽大洋机械有限公司| 昆山胜代机械有限公司招聘| 山东泰山起重机械有限公司| 温州华珍机械有限公司| 无锡精工机械有限公司| 潍坊天洁机械有限公司| 广东粤东机械实业有限公司| 济南数控机械有限公司| 浙江明天机械有限公司| 上海善佳机械设备有限公司| 临沂金盛机械配套有限公司| 广州广田包装机械有限公司| 南京神鹏机械设备有限公司 | 厦门机械制造有限公司| 常德烟草机械有限公司| 宁波双马机械工业有限公司| 河南泰兴粮油机械设备有限公司| 新疆机械设备有限公司| 山东通佳机械有限公司| 江苏东邦机械有限公司| 浙江风驰机械有限公司| 南京星德机械有限公司| 浙江荣亿精密机械有限公司| 荣嘉精密机械有限公司| 佛山定中机械有限公司| 新疆昆仑钢铁有限公司| 无锡锡科机械制造有限公司| 南通佳吉机械有限公司| 绵阳动力机械有限公司| 深圳市安格斯机械有限公司| 台山市机械厂有限公司| 东莞市金拓机械有限公司| 山东永华机械有限公司| 山东战尔机械有限公司| 浙江华天机械有限公司| 山西风源机械制造有限公司| 济南华工液压机械有限公司| 上海金湖机械有限公司| 浙江瑞浦机械有限公司| 吉川机械设备有限公司| 浙江蓝宝机械有限公司| 广州市力进食品机械有限公司| 青岛海诺机械制造有限公司 | 丹阳荣嘉精密机械有限公司| 北京欧力源机械有限公司| 郑州华宏机械设备有限公司| 洛阳塑电机械有限公司| 济南齐力升降机械有限公司| 苏州擎邦机械有限公司| 乐星机械无锡有限公司| 诸城市博康机械有限公司| 金瑞机械制造有限公司| 成都宏机械有限公司| 广州众起办公用品有限公司| 上海钊凯包装机械有限公司 | 河南云天起重机械有限公司| 江苏长虹涂装机械有限公司| 保定东利机械制造有限公司| 东芝机械上海有限公司| 山西天祥机械有限公司| 江苏闳业机械有限公司| 温州市兴业机械设备有限公司| 青岛锻压机械有限公司| 河南森源重工有限公司| 唐山港陆钢铁有限公司| 上海丁博重工机械有限公司| 北京恒机械设备有限公司| 常州万裕机械有限公司| 博可机械上海有限公司| 洛阳洛北重工机械有限公司| 青岛如隆机械有限公司| 大方起重机器有限公司| 浙江万通重工有限公司| 漳州南方机械有限公司| 青岛重工机械有限公司| 诸城市恒顺机械有限公司| 东莞麒麟机械有限公司| 浙江包装机械有限公司| 山东瑞华机械有限公司| 深圳市丹耐斯机械有限公司| 滁州富达机械电子有限公司| 广州市包装机械有限公司| 河南三兄重工有限公司| 江苏江河机械制造有限公司| 天津动力机械有限公司| 江阴机械制造有限公司怎么样| 玉环锐利机械有限公司| 湖北创联重工有限公司| 中欣机械厦门有限公司| 机械制造有限公司 官网| 东莞市台铭数控机械有限公司| 长沙凯瑞重工机械有限公司| 广东龙辉基业建筑机械有限公司| 杭州海特机械有限公司| 信易电热机械有限公司| 河南博众机械制造有限公司| 京西重工上海有限公司| 无锡南机械有限公司| 广东森人机械有限公司| 杭州 尔机械有限公司| 重庆地泽机械有限公司| 昆山乙盛机械工业有限公司| 黄石华旦机械制造有限公司| 福建南方路面机械有限公司| 上海宇意机械有限公司| 上海尼法机械有限公司| 济宁鑫聚机械有限公司| 道依茨法尔机械有限公司| 上海取祥机械有限公司| 天门纺织机械有限公司| 上饶中材机械有限公司| 北京火车头机械设备有限公司| 苏州新和机械有限公司| 金华机械 有限公司| 宁波联成机械有限公司| 运输有限公司起名大全| 洛阳鹏起实业有限公司| 郑州市长城重工机械有限公司| 江苏巨风机械制造有限公司| 爱可机械深圳有限公司| 宁波威恩精密机械有限公司| 河北奥宇钢铁有限公司| 长沙机械制造有限公司| 东莞市正一轴承机械有限公司| 南通宝顺机械有限公司| 南阳 机械 有限公司| 无锡润和机械有限公司| 如皋市联创捏合机械有限公司| 广东力丰机械有限公司| 深圳市精密达机械有限公司| 唐山 机械设备有限公司| 东莞正扬电子机械有限公司怎么样| 苏州开隆机械有限公司| 张家口中煤嘉益机械制造有限公司 | 山东力强机械有限公司| 宁波市北仑机械制造有限公司| 上海相宜机械有限公司| 江苏汉庭机械制造有限公司| 浙江塑料机械有限公司| 佛山创宝包装机械有限公司| 威图电子机械技术上海有限公司| 浙江胜祥机械有限公司| 广东乐善机械有限公司| 杭州莱顿机械有限公司| 南京腾阳机械有限公司|