BLOG CODE
BLOG
Features of This Code
✅ Create a new blog post
✅ View all posts
✅ Read a single post
✅ Edit a post
✅ Delete a post
✅ Uses Flask-WTF for form handling
✅ Uses Bootstrap for a clean UI
1️⃣ Install Dependencies
Run this in your terminal:
pip install flask flask_sqlalchemy flask_wtf wtforms
CODE
from flask import Flask, render_template, redirect, url_for, request, flash
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db'
app.config['SECRET_KEY'] = 'your_secret_key'
db = SQLAlchemy(app)
# Database Model for Blog Post
class BlogPost(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
# Form for Creating & Editing Posts
class PostForm(FlaskForm):
title = StringField("Title", validators=[DataRequired()])
content = TextAreaField("Content", validators=[DataRequired()])
submit = SubmitField("Submit")
# Home Page - Show All Posts
@app.route('/')
def index():
posts = BlogPost.query.order_by(BlogPost.id.desc()).all()
return render_template('index.html', posts=posts)
# Create New Post
@app.route('/new', methods=['GET', 'POST'])
def new_post():
form = PostForm()
if form.validate_on_submit():
new_post = BlogPost(title=form.title.data, content=form.content.data)
db.session.add(new_post)
db.session.commit()
flash("Post created successfully!", "success")
return redirect(url_for('index'))
return render_template('post_form.html', form=form, action="New Post")
# View Single Post
@app.route('/post/')
def post_detail(post_id):
post = BlogPost.query.get_or_404(post_id)
return render_template('post_detail.html', post=post)
# Edit Post
@app.route('/edit/', methods=['GET', 'POST'])
def edit_post(post_id):
post = BlogPost.query.get_or_404(post_id)
form = PostForm(obj=post)
if form.validate_on_submit():
post.title = form.title.data
post.content = form.content.data
db.session.commit()
flash("Post updated successfully!", "success")
return redirect(url_for('index'))
return render_template('post_form.html', form=form, action="Edit Post")
# Delete Post
@app.route('/delete/')
def delete_post(post_id):
post = BlogPost.query.get_or_404(post_id)
db.session.delete(post)
db.session.commit()
flash("Post deleted successfully!", "danger")
return redirect(url_for('index'))
if __name__ == '__main__':
with app.app_context():
db.create_all() # Creates database if not exists
app.run(debug=True)
3️⃣ Templates (Inside templates/ folder)
index.html (Homepage - Show All Posts)
Blog
{% endfor %}
post_form.html (Create & Edit Post)
{{ action }}
{{ post.title }}
My Blog
New Post {% for post in posts %}{{ action }}
post_detail.html (View Post){{ post.title }}
{{ post.content }}
Edit Delete Back 4️⃣ Running the Blog Install dependencies pip install flask flask_sqlalchemy flask_wtf wtforms Run the script python app.py Open in browser http://127.0.0.1:5000/ Key Improvements in This Version 🔹 Uses Flask-WTF to handle form validation 🔹 Displays flash messages for user actions 🔹 Uses Bootstrap for better UI 🔹 Optimized database queries This setup is clean, efficient, and scalable. Let me know if you need any extra features like user authentication or image uploads!
Comments
Post a Comment