首頁>技術>

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

import json

from flask import make_response,request

app=Flask(__name__, template_folder='./templates',static_folder="",static_url_path="")

#自定義過濾器

#1.過濾器函式add_template_filter

#呼叫偶數位的值

def filter(ls):

return ls[::2]

app.add_template_filter(filter,'fa')

#2.裝飾器函式 app.template_filter

#實現倒序正序

@app.template_filter('fl')

def fl(ls,x):

if ls[x]:

if x==0:

ls.sort()

if x==1:

ls.sort(reverse=True)

return ls

#預設為GET請求方式,先進行GET請求

@app.route('/hello',methods=['GET','POST'])

def hello1():

name={1:'one',2:'two'}

return json.dumps(name)

@app.route('/hello/<int:name>',methods=['GET'])

def hello2(name):

return 'hello2,%s'%name

#404頁面 1.自定義錯誤頁面

@app.route('/use/<id>')

def get_use(id):

if int(id)<10:

abort(404)

elif int(id)>20:

resp=Response('login fail')

abort(resp)

return '<h1>hello,%s</h1>'%id

#2.自定義錯誤頁面

@app.errorhandler(404)

def error(err):

return 'hello,this is a %s'%err

@app.route('/error1')

def err1():

error1=('index error',666,[('key','div'),('value','zero')])

return error1

@app.route('/error2')

def err2():

error2=('login error',444,{'serise':'100','dataframe':'200'})

return error2

@app.route('/error3')

def err3():

resp=make_response('search error')

resp.status='900'

resp.headers['hrr']='zjj'

resp.headers['hw']='zj'

return resp

import time

@app.route('/log', methods = ['GET','POST'])

def login1():

ip=request.remote_addr

aa=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))

if request.method == 'GET':

data={'name':'HJ',

'age':20,

'dict':{'city':'cs'},

'list':[0,1,2,3],

'int':1

}

return render_template('login.html',**data,use_ip=ip,time=aa)

else:

user='username' in request.form and request.form['username']

pa='password' in request.form and request.form['password']

if user or pa:

if user=='admin' and pa=='admin':

return '登入成功,'+' '+'使用者名稱為'+user+' '+'密碼為'

elif user=='' or pa =='':

return '登入失敗,沒有輸入使用者名稱或者密碼'

else:

return '登入失敗,沒有該使用者'

else:

return '頁面維護敬請期待'

#不同的裝飾器修飾同樣的檢視函式

#兩個路徑指向一個地址

@app.route('/hw')

@app.route('/zj')

def love():

#跳轉目標網頁 通過鍵值對來寫入資料

#return render_template('login.html',name='HW',age=25)

return render_template('login.html')

#重定向

#通過檢視函式訪問另一個裝飾器

@app.route('/hq')

def aq():

qw='/hello'

return redirect(qw)

#訪問hrr的檢視跳轉到hell1的函式

@app.route('/hrr')

def ai():

#找到裝飾器下檢視函式對應的路徑url_for

qq=url_for('hello1')

return redirect(qq)

#路由提取引數賦值,使用轉換器,此時是int

@app.route('/hmm/<int:hmm_id>') #轉換器型別三種:int float path

def hm(hmm_id):

return 'hmm_id:%s'%hmm_id

#不使用轉換器 此時型別是字串,除了/

@app.route('/zjj/<zjj_id>')

def zjj(zjj_id):

return 'zjj_id:%s'%zjj_id

if __name__=='__main__':

# app.config.update(DEBUG=True) # 引數形式配置

#print(isinstance(app.config, dict)) # True

#app.config.from_pyfile(r'C:\\Users\\Administrator\\Desktop\\demo1\\config.cfg') # 載入配置檔案

app.run('127.0.0.1','9000')

login.html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Title</title>

</head>

<body>

<p>ip:<strong>{{use_ip}}</strong></p>

<p>Time:<strong>{{time}}</strong></p>

<p>{{'hello,world'|capitalize|reverse}}</p>

<p>{{[2,3,2,3432,23,21,434,4323]|sort}}</p>

<p>{{[2,3,2,3432,23,21,434,4323]|fa}}</p>

<p>{{[2,3,2,3432,23,21,434,4323]|fl(1)}}</p>

<p>name={{name}}</p>

<p>age={{age}}</p>

<p>dict city={{dict['city']}}</p>

<p>dict city={{dict.city}}</p>

<p>list:{{list}}</p>

<p>list[int]:{{list[int]}}</p>

<p>list[1]+list[2]:{{list[1]+list[2]}}</p>

<form action="" method="post">

<p>使用者名稱:<input type="text" placeholder='username' name="username"></p>

<p> 密碼:<input type="password" placeholder='password' name="password"></p>

<input type="submit" value="login"><br/>

<p><img src="{{url_for('static',filename='timg.jpg')}}"/></p>

</form>

</body>

</html>

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Binder基本使用