38
loading...
This website collects cookies to deliver better user experience
python3 -m venv venv
. venv/bin/active.fish
venv/bin/active
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello world from flask</p>"
if __name__ == "__main__":
app.run(debug=True)
python app.py
render_template
of flask comes into play.from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def hello_world():
return render_template('home.html')
if __name__ == "__main__":
app.run(debug=True)
pip install flask_sqlalchemy
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db=SQLAlchemy(app)
class Todo(db.Model):
sno=db.Column(db.Integer,primary_key=True)
title=db.Column(db.String(200),nullable=False)
description = db.Column(db.String(200), nullable=False)
def __repr__(self) :
return "{} is the title and {} is the description".format(self.title,self.description)
from app import db
and hit enterdb.create_all()
and hit enter<form action="/" id="formSubmission" method="POST">
<span>Title</span>
<input type="text"name="title" placeholder="enter your Title" id="name">
<span>Description</span>
<input type="text"name="description" placeholder="Enter your description" id="description">
<button type="submit">Add Todo</button>
</form>
<ul id="data">
<li>Title</li>
<li>Time</li>
<li>Description</li>
</ul>
@app.route("/",methods=['POST'])
def main_page():
if request.method=='POST':
title=request.form['title']
description=request.form['description']
todo=Todo(title=title ,description=description)
db.session.add(todo)
db.session.commit()
alltodos=Todo.query.all()
return render_template('index.html',todos=alltodos)
db.session.add(your_data_object_here)
db.session.commit()
{% for user in todos %}
<li>{{loop.index}}</li>
<li>{{user.title}}</li>
<li>{{user.description}}
<div class="buttons">
<button><a href="/delete/{{user.sno}}">Delete</a>
<button><a href="/update/{{user.sno}}">Delete</a></button>
</div>
</li>
{% endfor %}
Lets look at some of the commands of sqlalchemy that we can use
.first()
in order to get only the first instance of it.Then we also have db.session.delete(todo_to_delete)
@app.route("/delete/<int:sno>")
def delete(sno):
deletetodo = Todo.query.filter_by(sno=sno).first()
db.session.delete(deletetodo)
db.session.commit()
return redirect("/")
Easy , right
redirect
module imported from the flaskSweet ! you now would be able to delete your todos as well .
Now we are able to
POST
request .Lets code it.
@app.route("/updatetodo/<int:sno>",methods=['POST'])
def update_todo(sno):
if request.method == 'POST':
updatetodo = Todo.query.filter_by(sno=sno).first()
title = request.form['title']
description = request.form['description']
todo = Todo(title=title, description=description)
updatetodo.title=title
updatetodo.description=description
db.session.commit()
return redirect("/")
updatetodo = Todo.query.filter_by(sno=sno).first()
return render_template('update.html',
updatetodo=updatetodo)
<div class="container">
<form action="/updatetodo/{{updatetodo.sno}}" id="formSubmission" method="POST">
<span>Title</span>
<input type="text"name="title" placeholder="enter your Title" id="name" value="{{updatetodo.title}}">
<span>Description</span>
<input type="text"name="description" placeholder="Enter your description" id="description" value="{{updatetodo.description}}">
<button type="submit">Update</button>
</form>