파이썬 보틀의 기본 7 Navi 데코레이터
13306 단어 병파이썬decoratorwebserverbootstrap4
Navi용 데코레이터의 작성은, Html를 괴롭히는 것만으로는 실현할 수 없다.
메뉴와 끝이 되는 라우팅을 할 필요가 있기 때문이다.
sample1.py@route('/')
def home():
return 'Hello World'
일반적으로 @route 과 def xxxx() 함수가 쌍으로 코딩됩니다.
또는.
sample2.pydef home():
return 'Hello World'
route('/','GET',home)
sample1.py가 더 멋지지만 route 함수로 라우팅하기 위해서는 home 함수를 라우팅 전에 준비해야합니다. 이 근처가 파이썬의 입장입니다.
home 함수에 대해 여러 라우팅을 수행하기 위해 샘플을 데코레이션을 사용하여 코딩합니다.
ex7.pyfrom bottle import *
import json,os
#HTML デコレーション(Bootstrap4)
def Html(title):
html='''
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>%s</title>
<link rel="stylesheet" type="text/css" href="/static/content/bootstrap.min.css" />
<link href="static/content/jumbotron.css" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="/static/content/site.css" />
<script src="/static/scripts/modernizr-2.6.2.js"></script>
<script src="/static/scripts/jquery-1.10.2.min.js"></script>
<script src="/static/scripts/bootstrap.min.js"></script>
<script src="/static/scripts/respond.min.js"></script>
<script src="/static/scripts/mindmup-editabletable.js"></script>
</head>
<body>
%s
</body>
</html>'''
def f0(f):
def f1(*a,**b):
return html%(title,f(*a,**b))
return f1
return f0
def Body():
def f0(f):
def f1(*a,**b):
return '<div class="container body-content">%s</div>'%f(*a,**b)
return f1
return f0
def Navi(menu):
nav='''<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<a class="navbar-brand" href="/">%s</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav mr-auto">
%s
</ul>
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>%s'''
def f0(f):
def f1(*a,**b):
nm=''.join(['<li class="nav-item"><a class="nav-link" href="/%s">%s</a></li>'%(x,x) for x in menu[1:]])
return nav%(menu[0],nm,f(*a,**b))
return f1
return f0
def routes(menu):
def f0(f):
route('/','GET',f)
[route("/%s"%x,'GET',f) for x in menu]
def f1(*a,**b):
return f(*a,**b)
return f1
return f0
menu='Home,Menu1,Menu2,Menu3,Disp'.split(',')
@routes(menu)
@Html('Hello')
@Navi(menu)
@Body()
def Home():
p=request.urlparts[2]
return "<h1>%s</h1><h1>Hello World</h1>"%(p)
#メニューの設定
#faviconの読み込み
@route('/favicon.ico')
def favcon():
return static_file('favicon.ico', root='./static')
#staic ファイルの読み込み
@route('/static/<filepath:path>')
def server_static(filepath):
return static_file(filepath, root='./static')
#web server のhost portの設定
HOST,PORT='localhost',8080
if __name__ =='__main__':
run(host=HOST,port=PORT)
위의 routes(name) 데코레이터 함수는 list로 주어진 라우팅 이름과 함수를 연결합니다./,Home,Menu1,Menu2,Menu3,Disp 어느 것이 와도 home에 날아갑니다.
또한 Navi 데코레이터는 Home, Menu1, Menu2, Menu3, Disp 메뉴에 추가되었습니다.
home 함수에서
snippet.pydef Home():
p=request.urlparts[2] #どのURLからコールされたか
return "<h1>%s</h1><h1>Hello World</h1>"%(p)
페이지마다 함수 또는, View를 쓰는 것도 좋지만, 빨래 만들 때는, 이런 식으로 쓰고 있다.
Reference
이 문제에 관하여(파이썬 보틀의 기본 7 Navi 데코레이터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hiratarich/items/6fa4c68f676105e9591f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
@route('/')
def home():
return 'Hello World'
def home():
return 'Hello World'
route('/','GET',home)
from bottle import *
import json,os
#HTML デコレーション(Bootstrap4)
def Html(title):
html='''
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>%s</title>
<link rel="stylesheet" type="text/css" href="/static/content/bootstrap.min.css" />
<link href="static/content/jumbotron.css" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="/static/content/site.css" />
<script src="/static/scripts/modernizr-2.6.2.js"></script>
<script src="/static/scripts/jquery-1.10.2.min.js"></script>
<script src="/static/scripts/bootstrap.min.js"></script>
<script src="/static/scripts/respond.min.js"></script>
<script src="/static/scripts/mindmup-editabletable.js"></script>
</head>
<body>
%s
</body>
</html>'''
def f0(f):
def f1(*a,**b):
return html%(title,f(*a,**b))
return f1
return f0
def Body():
def f0(f):
def f1(*a,**b):
return '<div class="container body-content">%s</div>'%f(*a,**b)
return f1
return f0
def Navi(menu):
nav='''<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<a class="navbar-brand" href="/">%s</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav mr-auto">
%s
</ul>
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>%s'''
def f0(f):
def f1(*a,**b):
nm=''.join(['<li class="nav-item"><a class="nav-link" href="/%s">%s</a></li>'%(x,x) for x in menu[1:]])
return nav%(menu[0],nm,f(*a,**b))
return f1
return f0
def routes(menu):
def f0(f):
route('/','GET',f)
[route("/%s"%x,'GET',f) for x in menu]
def f1(*a,**b):
return f(*a,**b)
return f1
return f0
menu='Home,Menu1,Menu2,Menu3,Disp'.split(',')
@routes(menu)
@Html('Hello')
@Navi(menu)
@Body()
def Home():
p=request.urlparts[2]
return "<h1>%s</h1><h1>Hello World</h1>"%(p)
#メニューの設定
#faviconの読み込み
@route('/favicon.ico')
def favcon():
return static_file('favicon.ico', root='./static')
#staic ファイルの読み込み
@route('/static/<filepath:path>')
def server_static(filepath):
return static_file(filepath, root='./static')
#web server のhost portの設定
HOST,PORT='localhost',8080
if __name__ =='__main__':
run(host=HOST,port=PORT)
def Home():
p=request.urlparts[2] #どのURLからコールされたか
return "<h1>%s</h1><h1>Hello World</h1>"%(p)
Reference
이 문제에 관하여(파이썬 보틀의 기본 7 Navi 데코레이터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiratarich/items/6fa4c68f676105e9591f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)