在用户注册的时候,想用ajax方式验证用户输入的账号是否被占用,可是服务器端不知道怎么用python实现。
我最近在学python的框架flask,用flask应该怎么写,用原生python的方式又该怎么写?
具体功能:
python检查用户输入的用户名,如果该用户名在数据库中存在,返回no。如果不是,返回ok。
这边的javascript的回调函数检查服务器端返回的字符,如果是ok,在输入框旁显示已用户名可用。如果不是ok,显示用户名已被占用。
这是我前台的javascript,已经实现了上述的第2个功能。
function initPage() {
document.getElementById("username").onblur = checkUsername;
document.getElementById("register").disabled = true;
}
function checkUsername() {
document.getElementById("username").className = "thinking";
request = createRequest();
if (request == null)
alert("Unable to create request");
else {
var theName = document.getElementById("username").value;
var username = escape(theName);
var url= "checkName.php?username=" + username;
request.onreadystatechange = showUsernameStatus;
request.open("GET", url, true);
request.send(null);
}
}
function showUsernameStatus() {
if (request.readyState == 4) {
if (request.status == 200) {
if (request.responseText == "okay") {
document.getElementById("username").className = "approved";
document.getElementById("register").disabled = false;
} else {
document.getElementById("username").className = "denied";
document.getElementById("username").focus();
document.getElementById("username").select();
document.getElementById("register").disabled = true;
}
}
}
}
下面是用flask简单地模拟验证的过程,可是访问主页后返回是一个字符。我想实现的是在index页面上输入框中输入文字,然后进行响应。现在页面直接变成了一个字符。
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/',methods=['POST','GET'])
def index():
data_set = ['bill','ted']
searchword = request.args.get('username')
if searchword not in data_set:
return 'okay'
return render_template('registration.html')
if __name__=='__main__':
app.run()
前后台分离了,那Python后台需要实现Restful API。
比如:
API: http://yourdomain/api/user/ch...
Method: POST
Parameter: {"username": "jacky"}
Response: 200: OK; 409: Conflict.
前后台用这个接口来交互。前台你已经写好了。
后台你可以使用Python的框架Django,Flask或者Paramid。
Django: Django Restful Framework
Flask: Flask-Restful
Paramid: paramid-restful-toolkit