Write 5 python coding flask, explain
- Hello World Flask App: This is a basic Flask application that displays "Hello World!" on a web page. It is a good starting point for learning Flask and understanding how to set up a simple web application.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
- Login System: This Flask application allows users to create an account and login. It uses Flask-Login to handle user authentication and Flask-WTForms to create the registration and login forms.
from flask import Flask, render_template, redirect, url_for
from flask_login import LoginManager, login_user, logout_user, login_required, UserMixin
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email, EqualTo
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secretkey'
login_manager = LoginManager(app)
login_manager.login_view = 'login'
class User(UserMixin):
def __init__(self, id, username, email, password):
self.id = id
self.username = username
self.email = email
self.password = password
users = []
@login_manager.user_loader
def load_user(user_id):
for user in users:
if user.id == int(user_id):
return user
return None
class RegistrationForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired(), EqualTo('confirm_password', message='Passwords must match')])
confirm_password = PasswordField('Confirm Password', validators=[DataRequired()])
submit = SubmitField('Register')
class LoginForm(FlaskForm):
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')
@app.route('/')
def home():
return render_template('home.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
user = User(len(users)+1, form.username.data, form.email.data, form.password.data)
users.append(user)
return redirect(url_for('login'))
return render_template('register.html', form=form)
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
for user in users:
if user.email == form.email.data and user.password == form.password.data:
login_user(user)
return redirect(url_for('home'))
return render_template('login.html', form=form)
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('home'))
if __name__ == '__main__':
app.run()
- Todo List: This Flask application allows users to create a todo list. It uses Flask-SQLAlchemy to store the todo list items in a database.
from flask import Flask, render_template, redirect, url_for, request
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 TodoItem(db.Model):
id = db.Column(db.Integer, primary_key=True)
text = db.Column(db.String(200))
completed = db.Column(db.Boolean, default=False)
def __repr__(self):
return f'<TodoItem {self.id}>'
@app.route('/')
def home():
todo_items = TodoItem.query.all()
return render_template('home.html', todo_items=todo_items)
@app.route('/add', methods=['POST'])
def add():
text = request.form['text']
todo_item = TodoItem(text=text)
db.session.add(todo_item)
db.session.commit()
return redirect(url_for('home'))
@app.route('/complete/<int:id>')
def complete(id):
todo_item = TodoItem.query.get(id)
todo_item.completed = True
db.session.commit()
return redirect(url_for('home'))
if __name__ == '__main__':
db.create_all()
app.run()
- File Upload: This Flask application allows users to upload files. It uses Flask-Uploads to handle file uploads and Flask-Bootstrap to create a nice-looking file upload form.
from flask import Flask, render_template, redirect, url_for
from flask_uploads import UploadSet, configure_uploads, IMAGES
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from wtforms import FileField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secretkey'
app.config['UPLOADED_PHOTOS_DEST'] = 'static/uploads'
photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)
bootstrap = Bootstrap(app)
class UploadForm(FlaskForm):
photo = FileField('Photo')
submit = SubmitField('Upload')
@app.route('/')
def home():
return render_template('home.html')
@app.route('/upload', methods=['GET', 'POST'])
def upload():
form = UploadForm()
if form.validate_on_submit():
filename = photos.save(form.photo.data)
return redirect(url_for('uploaded_file', filename=filename))
return render_template('upload.html', form=form)
@app.route('/uploads/<filename>')
def uploaded_file(filename):
return f'<img src="{url_for("static", filename="uploads/"+filename)}">'
if __name__ == '__main__':
app.run()
- API: This Flask application provides a simple API to retrieve and update data. It uses Flask-RESTful to create the API endpoints.
from flask import Flask
from flask_restful import Resource, Api, reqparse
app = Flask(__name__)
api = Api(app)
data = {
'1': {'name': 'Alice', 'age': 25},
'2': {'name': 'Bob', 'age': 30},
'3': {'name': 'Charlie', 'age': 35},
}
parser = reqparse.RequestParser()
parser.add_argument('name')
parser.add_argument('age')
class User(Resource):
def get(self, user_id):
return data[user_id]
def put(self, user_id):
args = parser.parse_args()
data[user_id]['name'] = args['name']
data[user_id]['age'] = args['age']
return data[user_id]
def delete(self, user_id):
del data[user_id]
return '', 204
class Users(Resource):
def get(self):
return data
def post(self):
args = parser.parse_args()
user_id = str(int(max(data.keys())) + 1)
data[user_id] = {'name': args['name'], 'age': args['age']}
return data[user_id], 201
api.add_resource(User, '/user/<string:user_id>')
api.add_resource(Users, '/users')
if __name__ == '__main__':
app.run()
原文地址: https://www.cveoy.top/t/topic/n98 著作权归作者所有。请勿转载和采集!