我想使用python模块Flask,ArangoDB和一堆带有CSS框架Bulma的HTML文件创建一个记笔记的网站。进行得很好,但是我不知道如何以HTML显示数组中的所有元素。我想我应该使用script标记,但是我不知道如何使用它。我什至都不懂JavaScript。无论如何,有没有人可以帮助您呢?这是我的python代码:
from flask import Flask, render_template, request, redirect, url_for
from arango import ArangoClient
client = ArangoClient()
db = client.db("notes", username="root", password="************")
users = db.collection("Users")["Users"]["users"]
failed = ""
failed_message = "This username is taken"
username = ""
welcome = ""
new_note_message = "Create a new note!"
app = Flask(__name__)
def check_usernames(new_username):
users = db.collection("Users")["Users"]["users"]
for i in users:
if i["username"] == new_username:
return False
return True
def check_notes(new_note):
notes = db.collection("Users")[username]["notes"]
for i in notes:
if i["title"] == new_note:
return False
return True
@app.route("/")
def home():
global username
backup = username
username = ""
global failed
failed = ""
if backup == "":
return render_template("index.html")
else:
username = backup
return redirect(url_for("notes_page"))
@app.route("/after-login", methods=["POST"])
def handle_login():
global welcome
welcome = "Welcome back!"
users = db.collection("Users")["Users"]["users"]
if {"username": request.form["Username"], "password": request.form["Password"]} in users:
global username
username = request.form["Username"]
return redirect(url_for("notes_page"))
else:
global failed
failed = " failed"
return redirect(url_for("login"))
@app.route("/logout")
def handle_logout():
global username
username = ""
return redirect(url_for("home"))
@app.route("/login")
def login():
if username == "":
return render_template("login.html", message="Login" + failed)
else:
return redirect(url_for("notes_page"))
@app.route("/register")
def register():
if username == "":
return render_template("register.html", message="Register" + failed, submessage="")
else:
return redirect(url_for("notes_page"))
@app.route("/after-register", methods=["POST"])
def handle_register():
global welcome
welcome = "Welcome!"
users = db.collection("Users")["Users"]["users"]
if check_usernames(request.form["Username"]):
global username
username = request.form["Username"]
users.append({"username": request.form["Username"], "password": request.form["Password"]})
db.aql.execute("UPDATE {_key: 'Users'} WITH {users: " + str(users) + "} INTO Users")
db.aql.execute("INSERT {_key: '" + username + "'} INTO Users")
db.aql.execute("UPDATE {_key: '" + username + "'} WITH {notes: []} INTO Users")
return redirect(url_for("notes_page"))
else:
global failed
failed = " failed"
return redirect(url_for("register"))
@app.route("/notes")
def notes_page():
global notes
notes = db.collection("Users")[username]["notes"]
if username != "":
return render_template("notes.html", username=username, notes=notes, welcome=welcome)
else:
return redirect(url_for("home"))
@app.route("/new")
def new():
return render_template("create.html", message=new_note_message)
@app.route("/after-note", methods=["POST"])
def handle_new_note():
if check_notes(request.form["Title"]):
global notes
notes = db.collection("Users")[username]["notes"]
notes.append({"title": request.form["Title"], "note": request.form["Note"]})
db.aql.execute("UPDATE {_key: '" + username + "'} WITH {notes: " + str(notes) + "} INTO Users")
return redirect(url_for("notes_page"))
else:
global new_note_message
new_note_message = "You already made a note with this title"
return redirect(url_for("new"))
if __name__ == "__main__":
app.run(debug=True)
以及该特定页面的HTML代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{welcome}}</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/bulma.min.css">
</head>
<body>
<section class="section has-text-centered">
<h1 class="title is-2">Hi {{username}}!</h1>
<a href={{url_for('new')}} class="button is-rounded is-outlined is-primary">Create a note</a>
<a href={{url_for('handle_logout')}} class="button is-rounded is-outlined is-danger">Log out</a>
</section>
</body>
</html>
我想让用户在2个按钮下面创建笔记,如果没有,则程序说:“您没有笔记。今天创建您的第一个笔记!”
有什么办法吗?
谢谢
您可以将数组传递到HTML文件中,并使用Jinja2遍历元素。
{% for item in array %}
<!--- what you want to loop --->
{% endfor %}
如果您需要更多信息,请阅读文档:https : //jinja.palletsprojects.com/en/2.11.x/templates/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句