Skip to content

Commit 4532637

Browse files
committed
ajax demo
1 parent 759ea9a commit 4532637

4 files changed

Lines changed: 134 additions & 2 deletions

File tree

demo/flask_demo/ajax_demo.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from flask import Flask, render_template
2+
3+
app = Flask(__name__)
4+
5+
6+
@app.route("/")
7+
def index():
8+
return render_template("ajax_demo.html")
9+
10+
11+
@app.route("/getUserInfo/<username>")
12+
def get_user_info(username):
13+
user_info = {}
14+
if username == "zhangsan":
15+
user_info = {"username": "zhangsan", "age": 3, "mail": "1@1.com"}
16+
return {"data": user_info, "status": 200}
17+
18+
19+
if __name__ == "__main__":
20+
app.run(debug=True)
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from flask import Flask
2+
from flask_sqlalchemy import SQLAlchemy
3+
from werkzeug.security import generate_password_hash, check_password_hash
4+
import os
5+
6+
basedir = os.path.abspath(os.path.dirname(__file__))
7+
8+
"""
9+
mysql://username:password@hostname/database
10+
postgresql://username:password@hostname/database
11+
sqlite:////absolute/path/to/database
12+
"""
13+
app = Flask(__name__)
14+
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + os.path.join(
15+
basedir, "data.sqlite"
16+
)
17+
print(app.config.get("SQLALCHEMY_DATABASE_URI"))
18+
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
19+
20+
db = SQLAlchemy(app)
21+
22+
23+
# 定义模型
24+
class Role(db.Model):
25+
__tablename__ = "roles"
26+
id = db.Column(db.Integer, primary_key=True)
27+
name = db.Column(db.String(64), unique=True)
28+
users = db.relationship("User", backref="role")
29+
30+
def __repr__(self) -> str:
31+
return "<Role %s>" % self.name
32+
33+
34+
class User(db.Model):
35+
__tablename__ = "users"
36+
id = db.Column(db.Integer, primary_key=True)
37+
username = db.Column(db.String(64), unique=True)
38+
password = db.Column(db.String(64))
39+
password_hash = db.Column(db.String(128))
40+
41+
@property
42+
def password(self):
43+
raise AttributeError("Password is not readable")
44+
45+
@password.setter
46+
def password(self, password):
47+
self.password_hash = generate_password_hash(password)
48+
49+
def verify_password(self, password):
50+
return check_password_hash(self.password_hash, password)
51+
52+
role_id = db.Column(db.Integer, db.ForeignKey("roles.id"))
53+
54+
def __repr__(self) -> str:
55+
return "<User %s>" % self.username
56+
57+
58+
@app.shell_context_processor
59+
def make_shell_context():
60+
return dict(db=db, User=User, Role=Role)
61+
62+
63+
# 迁移数据库
64+
# pip install flask-migrate
65+
from flask_migrate import Migrate
66+
67+
migrate = Migrate(app, db)
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Ajax Test</title>
6+
<!-- 从公网引入 jquery -->
7+
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
8+
</head>
9+
<body>
10+
<input type="text" id="user">
11+
<button type="submit" onclick="getTable1()">提交</button>
12+
<p id="userinfo"></p>
13+
</body>
14+
</html>
15+
16+
17+
<script>
18+
function getTable1(){
19+
if ($("#user").val() == ""){
20+
$("#userinfo").text("内容不能为空!")
21+
}else{
22+
// $.ajax 接收一个参数,包含当前请求的所有配置
23+
$.ajax({
24+
url: './getUserInfo/' + $("#user").val(), // 必填,请求的地址
25+
type: 'GET', // 选填,请求方式,默认是 GET(忽略大小写)
26+
data: {}, // 选填,发送P请求是携带的参数
27+
dataType: 'json', // 选填,期望返回值的数据类型,默认是 string
28+
async: true, // 选填,是否异步,默认是 true
29+
success: function(data){
30+
//$("#userinfo").text(JSON.stringify(data))
31+
//console.log(data["data"])
32+
for (var key in data.data){
33+
$("#userinfo").append('<tr><th>'+key+'</th><td>'+data.data[key]+'</td></tr>')
34+
}
35+
}, // 选填,成功的回调函数
36+
error: function(){$("#userinfo").text("获取信息失败")}, // 选填,失败的回调函数
37+
cache: true, // 选填,是否缓存,默认是 true
38+
context: "", // 选填,回调函数中的 this 指向,默认是 ajax 对象
39+
status: {}, // 选填,根据对应的状态码进行函数执行
40+
timeout: 1000, // 选填,超时事件
41+
})
42+
}
43+
44+
}
45+
</script>

demo/flask_demo/templates/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ <h2>Hello {{ name }} !</h2>
1414
{% else %}
1515
<script>alert("Hello Stranger !")</script>
1616
{% endif %}
17-
<p>当前时间: {{ moment(current_time).format('LLL') }}</p>
18-
<p>已经是: {{ moment(current_time).fromNow(refresh=True) }}</p>
17+
<!-- <p>当前时间: {# moment(current_time).format('LLL') #}</p> -->
18+
<!-- <p>已经是: {# moment(current_time).fromNow(refresh=True) #}</p> -->
1919

2020
</body>
2121

0 commit comments

Comments
 (0)