Python 用のボトル フレームワーク (セッションにはビーカーも使用) を使用しており、HTML コード内のスクリプトから変数にアクセスする際に問題があります。以下は Python スクリプトです。
import os, MySQLdb, hashlib, random, markdown2
import beaker.middleware
import bottle
from bottle import run, route, post, get, request, abort, template, hook, app, view
@post('/submit')
def submit():
db = MySQLdb.connect(host='localhost', port=3306, user="root", passwd="blkFDF94alkf", db="_pCMS")
query = db.cursor()
user = request.forms.get('credentials.username')
username = MySQLdb.escape_string(user)
request.session['username'] = username
passw = request.forms.get('credentials.password')
pass_w = MySQLdb.escape_string(passw)
passw2 = str(pass_w)
password = hashlib.md5(passw2).hexdigest()
user_name = request.session['username']
if username >= 2 and password >= 6:
if True:
ugh = query.execute("SELECT * FROM users WHERE username = '%s' AND password = '%s'" % (username, password))
db.commit()
return me()
else:
return index()
上記のコードを説明する必要があるとは思えません。知っておく必要があるのは、以下の HTML コードの Python スクリプトの関数で変数 user_name にアクセスする方法だけだからです。これは私がHTMLについて持っているものです:
me.tpl:
<div class="label">Name:</div>
%if len(user_name) >= 2:
<div class="content">{{user_name}}</div>
%end
</div>
それは変数 user_name にアクセスする正しい方法ですか? 次のエラーが表示されるため、そのようには機能しません。
NameError: name 'user_name' is not defined
me() と index() が行うこと:
@route('/')
@route('/index')
@view('index.tpl')
def index():
index = { 'index' : _index()}
return index
def _index():
return 't'
@get('/me')
@view('me.tpl')
def me():
me = { 'me' : _me()}
return me
def _me():
return 't'