CMS API โดยใช้ Flask สมมติว่าคุณต้องการเริ่มต้นบล็อกหรือแสดงผลิตภัณฑ์และบริการของคุณบนเว็บไซต์ ทางเลือกหนึ่งคือสร้างทุกอย่างตั้งแต่เริ่มต้นโดยใช้ HTML, CSS และ JavaScript สิ่งนี้จะต้องมีการสร้างฐานข้อมูล การเข้าสู่ระบบของผู้ดูแลระบบ และอินเทอร์เฟซเพื่อให้คุณสามารถเข้าสู่ระบบและอัปเดตข้อมูลได้ เนื่องจากต้องใช้ความพยายามอย่างมาก คุณจึงควรใช้ระบบจัดการเนื้อหา (CMS) ที่ได้รับการพิสูจน์แล้ว หากคุณไม่คุ้นเคยกับการเขียนโปรแกรม CMS มีเครื่องมือทั้งหมดที่จำเป็นในการจัดการเนื้อหาและนำเค้าโครงต่างๆ ไปใช้กับเว็บไซต์ตั้งแต่แกะกล่อง
มี CMS ที่แตกต่างกันมากมายเช่น WordPress, Wix, Contentful หรือ Squarespace ซึ่งสามารถใช้สร้างเว็บไซต์และเว็บแอปพลิเคชันได้ CMS จัดเตรียมอินเทอร์เฟซการแก้ไขภาพ เทมเพลต โค้ดที่กำหนดเอง และความสามารถในการจัดการเนื้อหาอื่นๆ ทั้งหมดจากสภาพแวดล้อมเดียว WordPress หนึ่งในตัวเลือกที่ทรงพลังที่สุด มีปลั๊กอินมากมายเพื่อขยายพฤติกรรมและแนะนำความสามารถด้านอีคอมเมิร์ซที่ทรงพลัง
ทีนี้ คำถามต่อไปก็เกิดขึ้น: CMS แบบไม่มีหัวคืออะไร ?
CMS หัวขาดคืออะไร?
ดังนั้นเราจึงใช้ CMS มาประมาณ 20 ปีแล้ว อย่างไรก็ตาม โลกเปลี่ยนไปมาก ยุคอุปกรณ์พกพาในปัจจุบันได้เห็นการเติบโตอย่างมากในด้านใหม่ๆ เช่น IoT บอท ความช่วยเหลือด้านดิจิทัล และ VR อย่างไรก็ตาม CMS แบบดั้งเดิมไม่ได้สร้างขึ้นสำหรับแพลตฟอร์มล้ำสมัยเหล่านี้
ในปัจจุบันนี้ เนื้อหาต้องแสดงบนอุปกรณ์ต่างๆ ในรูปแบบต่างๆ เนื่องจาก CMS แบบเดิมไม่ได้พัฒนาขึ้นเพื่อจุดประสงค์นี้ เราจึงต้องการระบบการจัดการเนื้อหาแบบไคลเอ็นต์-ไม่เชื่อเรื่องพระเจ้ารูปแบบใหม่ นี่คือที่มาของ CMS ที่ไม่มีหัว
CMS ที่ไม่มีหัวจะเน้นที่กระบวนการแบ็กเอนด์ในการจัดการเนื้อหาเท่านั้น ไม่ได้ควบคุมลักษณะการนำเสนอส่วนหน้า แต่ CMS ที่ไม่มีส่วนหัวจะใช้ API เพื่อจัดเตรียมเนื้อหาให้กับช่องปลายทาง ด้วยวิธีนี้ CMS ที่ไม่มีส่วนหัวจะถูกแยกออกจากไคลเอนต์ (“หัว”) ดังนั้นจึงไม่มีส่วนหัว การใช้ API เพื่อแยกข้อกังวลหมายความว่าเนื้อหาของคุณจะถูกส่งไปยังแพลตฟอร์มใดก็ได้ อาจเป็นเว็บไซต์เชิงมุม แอปพลิเคชันมือถือ หรือแม้แต่สมาร์ตวอทช์
ข้อดีของ CMS ที่ไม่มีหัว
- มีความปลอดภัยมากกว่าเมื่อเทียบกับ CMS แบบเดิม
- นอกจากนี้ยังมีขนาดเล็กกว่า
- เร็วกว่า CMS ทั่วไป
- ช่วยให้คุณเลือกภาษาใดก็ได้สำหรับการพัฒนาส่วนหน้า
- ช่วยให้คุณสามารถเผยแพร่เนื้อหาของคุณไปยังแพลตฟอร์มต่างๆ
ข้อเสียของ CMS หัวขาด
- คุณต้องจัดการสองส่วนพร้อมกัน — ส่วนหลังและส่วนหน้า
- คุณจะต้องมีโครงสร้างพื้นฐานที่แตกต่างไปจากเดิมอย่างสิ้นเชิงเพื่อดูแลส่วนหน้า
- การบำรุงรักษาอาจมีราคาแพงกว่า CMS แบบเดิม
CMS หัวขาดยอดนิยมบางตัว
- โดยตรง
- ปริซึม
- เนื้อหา Kentico
- Bloomreach
- แมกโนเลีย
ตอนนี้เราเข้าใจแล้วว่า CM ที่ไม่มีหัวคืออะไร มาเรียนรู้วิธีสร้างกัน ในคำแนะนำนี้ เราจะสร้าง CMS ที่ไม่มีส่วนหัวโดยใช้ Flask และ MySQL
ข้อกำหนดเบื้องต้น
- Python
- MySQL
- กระติกน้ำ
- โปรแกรมแก้ไขโค้ดเช่น VS Code
- MySQL
- SQLalchemy
ขั้นตอน – 1: การตั้งค่า
เปิดเทอร์มินัลของคุณและสร้างโฟลเดอร์ใหม่โดยใช้คำmkdir
สั่ง เรากำลังใช้cms
เป็นชื่อโฟลเดอร์:
mkdir cms
ตอนนี้เปิดโฟลเดอร์:
cd cms
virtualenv .
pipenv install flask flask-sqlalchemy flask-cors
ตอนนี้เราต้องสร้างไฟล์และโฟลเดอร์ต่างๆ ภายในโฟลเดอร์รูท เพื่อประโยชน์ของการฝึกปฏิบัตินี้ ให้สร้างโครงสร้างนี้จากห้าโฟลเดอร์และหนึ่งไฟล์:
- บล็อก
- เข้าสู่ระบบ
- แท็ก
- blog_tags
- ผู้ใช้
- __init__.py
ตอนนี้สร้างไฟล์ Python ด้วย โครงสร้างโฟลเดอร์สุดท้ายจะต้องเป็นดังนี้:
- บล็อก
– blog_model.py
– blog_routes.py - เข้าสู่ระบบ
– login_route.py - แท็ก
– tag_model.py - blog_tags
– blog_tag_table.py - ผู้ใช้
– user_model.py
เมื่อคุณสร้างโครงสร้างโครงการแล้ว ให้ติดตั้งFlask
และvirtualenv
. เราได้กล่าวถึงวิธีตั้งค่า Flask ไปแล้วในบทความที่แล้ว คุณสามารถตรวจสอบได้ที่นี่แล้วทำตามขั้นตอนต่อไป
มาติดตั้ง flask-sqlalchemy
กัน บนเทอร์มินัลของคุณ ให้วางคำสั่งด้านล่าง:
python3 -m pip install flask-sqlalchemy
อะไรกันแน่flask-sqlalchemy
? มันเป็นส่วนขยาย Flask ที่เพิ่มการรองรับsqlalchemy
และทำให้งาน MySQL จำนวนมากง่ายขึ้น มันใช้ Object Relational Mapping (ORM) ทำให้คุณเรียกใช้การสืบค้นได้ง่ายขึ้นโดยไม่ต้องจดคำสั่ง SQL ดิบ
กำลังเริ่มต้น
เมื่อติดตั้งการพึ่งพาทั้งหมดแล้วก็ถึงเวลาเขียนโค้ด ดังนั้น เปิดcms/__init__.py
โปรแกรมแก้ไขโค้ดของคุณแล้ววางโค้ดด้านล่าง:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///flaskdatabase.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
CORS(app)
db.init_app(app)
return app
คำอธิบาย:
ที่นี่ เราได้สร้างฟังก์ชันที่เรียกว่าcreate_app()
ซึ่งโดยพื้นฐานแล้วจะเริ่มต้นแอปพลิเคชันและฐานข้อมูลของเราพร้อมๆ กัน ซึ่งเราสามารถใช้ที่ใดก็ได้ในโค้ด
ขั้นตอน – 2: ตั้งค่าฐานข้อมูล
ในขั้นตอนนี้ เราจะสร้างตารางสำหรับ CMS ที่ไม่มีส่วนหัว ตารางเหล่านี้จะจัดเก็บข้อมูลทั้งหมดที่เราจะเผยแพร่ผ่าน CMS ของเรา เราจะเริ่มต้นด้วยตารางบล็อกซึ่งจะมีคอลัมน์: id
, title
, text
, date_of_publish
, image
, tags
. หากคุณต้องการ คุณสามารถเพิ่มคอลัมน์อื่นๆ ได้หากต้องการ แต่สำหรับตอนนี้ เพื่อความง่าย เราแค่สร้างคอลัมน์พื้นฐานซึ่งมีอยู่ใน CMS ส่วนใหญ่
ตอนนี้เปิด Blog/blog_model.py
และวางรหัสด้านล่าง:
from cms import db
from datetime import datetime
from cms.blog_tags.blog_tag_table import tag_blog
tags=db.relationship('Tag',secondary=tag_blog,backref=db.backref('blogs_associated',lazy="dynamic"))
class Blog(db.Model):
id = db.Column(db.Integer,primary_key=True)
title=db.Column(db.String(50),nullable=False)
text=db.Column(db.Text,nullable=False)
image= db.Column(db.String,nullable=False)
date_of_publish = db.Column(db.DateTime, default=datetime.utcnow)
@property
def serialize(self):
return {
'id': self.id,
'title': self.title,
text: self.text,
image: self.image,
date_of_publish: self.date_of_publish,
}
คำอธิบาย:
เรากำลังนำเข้าโมดูลต่างๆ เช่นdb
สำหรับการเชื่อมต่อฐานข้อมูล และdatetime
การประทับเวลา เราได้สร้างแบบจำลองBlog
และกำหนดฟิลด์ทั้งหมดในนั้น มีฟังก์ชันที่เรียกว่าserialize(self)
ซึ่งใช้เพื่อส่งคืนข้อมูลทั้งหมดในรูปแบบ JSON
คุณอาจสังเกตเห็นว่าเรายังไม่ได้กำหนดแท็กที่นี่ใช่ไหม เนื่องจากtags
เป็นคีย์นอกที่จะมาจากตารางที่เรียกว่า tags
. โดยทั่วไป หนึ่งโพสต์สามารถมีแท็กได้หลายแท็ก และหนึ่งแท็กสามารถเชื่อมโยงกับโพสต์บล็อกหลายรายการ
ตอนนี้เปิด cms/Tag/tag_model.py
และวางรหัสด้านล่าง:
from cms import db
class Tag(db.Model):
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(20))
@property
def serialize(self):
return {
'id': self.id,
'name': self.name
}
คำอธิบาย:
เราได้กำหนดโมเดลด้วย id
และ name
คอลัมน์ เนื่องจากแท็กไม่ต้องการมากกว่าคอลัมน์เหล่านี้
เมื่อสร้างโมเดลเสร็จแล้ว ก็ถึงเวลาสร้างตารางเช่นกัน ดังนั้นให้เปิดไฟล์ cms/blog_tags/blog_tag_table.py
และวางโค้ดด้านล่าง:
from cms import db
tag_blog = db.Table('tag_blog',
db.Column('tag_id',db.Integer,db.ForeignKey('tag.id'), primary_key=True),
db.Column('blog_id', db.Integer,db.ForeignKey('blog.id'),primary_key=True)
)
คำอธิบาย:
ตารางนี้เก็บความสัมพันธ์ระหว่างตารางบล็อกและตารางแท็กที่tag_id
แมปblog_id
ด้วย
ขั้นตอนที่ -3: การเพิ่มพิมพ์เขียว:
ตอนนี้เราต้องแก้ไขไฟล์Blog/blog_routes.py
และเพิ่มโค้ดด้านล่าง:
blogs= Blueprint('blogs',__name__)
เปิด cms/ __init__.py
และเพิ่มโค้ดด้านล่าง:
from cms.Blog.blog_routes import blogs
app.register_blueprint(blogs)
คำอธิบาย:
เรากำลังเพิ่มพิมพ์เขียวที่นี่ ช่วยให้เราแบ่งแอปพลิเคชันออกเป็นส่วนประกอบขนาดเล็กที่สามารถนำกลับมาใช้ใหม่ได้ทุกที่ ที่นี่เราได้กำหนด blogs
เป็นพิมพ์เขียว
ขั้นตอน –4: การสร้างเส้นทางสำหรับการเผยแพร่บล็อกโพสต์
ตอนนี้เปิดของคุณ blog_routes.py
และเพิ่มรหัสด้านล่าง:
from flask import Blueprint,request,jsonify,make_response
from flask_jwt_extended import jwt_required
from cms import db
from cms.Blog.blog_model import Blog
from cms.Tag.tag_model import Tag
blogs= Blueprint('blogs',__name__)
@blogs.route('/add_post',methods=["POST"])
def create_blog():
data = request.get_json()
new_blog=Blog(title=data["title"],content=data["content"],image=data["image"])
for tag in data["tags"]:
current_tag=Tag.query.filter_by(name=tag).first()
if(current_tag):
current_tag.blogs_associated.append(new_blog)
else:
new_tag=Tag(name=tag)
new_tag.blogs_associated.append(new_blog)
db.session.add(new_tag)
db.session.add(new_blog)
db.session.commit()
blog_id = getattr(new_blog, "id")
return jsonify({"id": blog_id})
คำอธิบาย:
เราได้สร้างเส้นทาง/blog_post
ซึ่งเรียกใช้ฟังก์ชันที่จะcreate_blog()
สร้าง โดยทั่วไปแล้วฟังก์ชันนี้ใช้ในการสร้างโพสต์บล็อกและยอมรับชื่อ ข้อความ รูปภาพ และแท็ก เรากำลังดำเนินการวนรอบที่สามารถรับแท็กได้หลายแท็ก และหากไม่มีแท็ก แท็กนั้นจะสร้างแท็กใหม่และเชื่อมโยงกับโพสต์ในบล็อก CMS API โดยใช้ Flask
ขั้นตอนที่ –5: การสร้างเส้นทางเพื่อดึงข้อมูลโพสต์ในบล็อก:
เราจะสร้างสองเส้นทางที่แตกต่างกันเพื่อดึงข้อมูลโพสต์ในบล็อก เส้นทางหนึ่งจะดึงข้อมูลโพสต์ในบล็อกทั้งหมด ในขณะที่อีกเส้นทางหนึ่งจะใช้เพื่อดึงข้อมูลโพสต์บนบล็อกโดยid
ใช้ สามารถใช้เพื่อค้นหาโพสต์ในบล็อกเมื่อผู้ใช้เปิดโพสต์บล็อกแบบเต็ม ตอนนี้เปิด blog_routes.py
และวางรหัสด้านล่าง:
@blogs.route('/blogs',methods=["GET"])
def get_all_blogs():
blogs= Blog.query.all()
serialized_data = []
for blog in blogs:
serialized_data.append(blog.serialize)
return jsonify({"all_blogs": serialized_data})
คำอธิบาย:
เราได้กำหนดเส้นทาง /blogs
ซึ่งเรียก SELECT
ใช้แบบสอบถามโดยใช้ ORM และส่งคืน JSON ที่มีโพสต์บล็อกทั้งหมดและข้อมูลของพวกเขาภายใต้ all_blogs
คีย์
ตอนนี้เพื่อดึงบล็อกโพสต์ด้วยid
การวางโค้ดด้านล่างนี้โดยเฉพาะ:
@blogs.route('/blog/<int:id>',methods=["GET"])
def get_single_blog(id):
blog = Blog.query.filter_by(id=id).first()
serialized_blog = blog.serialize
serialized_blog["tags"] = []
for tag in blog.tags:
serialized_blog["tags"].append(tag.serialize)
return jsonify({"single_blog": serialized_blog})
คำอธิบาย:
เราได้กำหนดเส้นทางอื่น /blog
ซึ่งยอมรับค่าจำนวนเต็มและส่งคืนข้อมูลบล็อกทั้งหมดใน JSON ภายใต้ single_blog
คีย์
ขั้นตอนที่ –6: การสร้างเส้นทางเพื่อลบโพสต์ในบล็อก:
จนถึงตอนนี้เราได้กล่าวถึงวิธีการสร้างบล็อกแล้ว ต่อไปนี้คือวิธีการลบโพสต์ในบล็อก ใน ให้blog_routes.py
วางโค้ดด้านล่าง:
@blogs.route('/delete_post/<int:id>', methods=["DELETE"])
def delete_post(id):
blog = Blog.query.filter_by(id=id).first()
db.session.delete(blog)
db.session.commit()
return jsonify("Blog was deleted"),200
คำอธิบาย:
ที่นี่ เราได้กำหนดเส้นทาง /delete_post
ซึ่งยอมรับการ id
โพสต์บล็อกและเรียกใช้แบบสอบถามการลบสำหรับบล็อกที่ id
เกี่ยวข้อง
ขั้นตอนที่ –7: การสร้างเส้นทางเพื่ออัปเดตโพสต์ในบล็อก:
ในการอัปเดตบล็อกโพสต์ เราจะใช้PUT
วิธีที่นี่ ซึ่งจะใช้บล็อกid
เป็นพารามิเตอร์อินพุต ดังนั้นใน blog_routes.py
การเพิ่มรหัสด้านล่าง:
@blogs.route('/update_post/<int:id>', methods=["PUT"])
def update_post(id):
data = request.get_json()
blog=Blog.query.filter_by(id=id).first_or_404()
blog.title = data["title"]
blog.text=data["text"]
blog.image=data["image"]
updated_blog = blog.serialize
db.session.commit()
return jsonify({"blog_id": blog.id})
คำอธิบาย:
เราได้เพิ่มเส้นทางเข้าไปอีกเส้นทางหนึ่ง /update_post
ซึ่งใช้ PUT
วิธีดังกล่าวและเรียกใช้ UPDATE
แบบสอบถามในบล็อกที่ส่ง id
ผ่าน
ขั้นตอนที่ –8: การเพิ่มผู้ใช้ผู้ดูแลระบบและเส้นทางการเข้าสู่ระบบ:
ตอนนี้เราได้กำหนดเส้นทางทั้งหมดที่สามารถดำเนินการ CRUD ในบล็อกโพสต์แล้ว แต่เรายังต้องป้องกันการเข้าถึงโดยไม่ได้รับอนุญาตใช่ไหม เพื่อให้แน่ใจว่าไม่มีบุคคลที่ไม่ได้รับอนุญาตสามารถอัปเดตหรือเพิ่มโพสต์ในบล็อกได้
ก่อนอื่นเราจะสร้างโมเดลผู้ใช้ที่จะใช้เก็บข้อมูลผู้ใช้ ดังนั้น เปิดไฟล์ cms/User/user_model.py
และวางโค้ดด้านล่าง:
from cms import db
class User(db.Model):
id=db.Column(db.Integer,primary_key=True)
email=db.Column(db.String(120),nullable=False)
password=db.Column(db.String(120),nullable=False)
ที่นี่เราจะมีผู้ดูแลระบบเพียงคนเดียว ดังนั้นเราจึงไม่จำเป็นต้องสร้างเส้นทางสำหรับสิ่งนั้น ดังนั้นใน __init__.py
ไฟล์ของคุณให้วางโค้ดด้านล่าง:
@click.command(name='add_admin')
@with_appcontext
def add_admin():
admin=User(email="ADMIN EMAIL",password="YOUR PASSWORD STRING")
admin.password = generate_password_hash(admin.password,'sha256',salt_length=12)
db.session.add(admin)
db.session.commit()
app.cli.add_command(add_admin)
และที่ด้านบน ให้เพิ่มโค้ดด้านล่าง:
import click
from flask.cli import with_appcontext
from werkzeug.security import generate_password_hash
คำอธิบาย:
ที่นี่เรากำลังจัดเก็บอีเมลและรหัสผ่านสำหรับผู้ใช้ที่เป็นผู้ดูแลระบบ ตอนนี้เราไม่สามารถจัดเก็บเป็นข้อความธรรมดาได้ ดังนั้นเราจึงใช้ SHA256
การแฮช
เมื่อทำส่วนข้างต้นเสร็จแล้ว เราต้องสร้างเส้นทางสำหรับเข้าสู่ระบบของผู้ดูแลระบบ ในการทำเช่นนั้น เราต้องเปิด Login/login_route.py
ไฟล์และวางโค้ดด้านล่าง:
from flask import Blueprint,request,jsonify
from cms.User.user_model import User
from flask_jwt_extended import create_access_token
from werkzeug.security import check_password_hash
login=Blueprint('login', __name__)
@login.route('/login', methods=["POST"])
def log_in():
request_data = request.get_json()
user=User.query.filter_by(email=request_data["email"]).first()
if user:
if check_password_hash(user.password,request_data["password"]):
jwt_token=create_access_token(identity=user.email)
return jsonify({"token":jwt_token})
else:
return "Invalid email or password",400
คำอธิบาย:
ที่นี่เราได้กำหนดเส้นทาง /login
ซึ่งจะใช้อีเมลและรหัสผ่าน เมื่อทั้งสองถูกต้องแล้ว จะส่งคืนโทเค็น JWT ที่คุณสามารถใช้ส่งคำขอครั้งต่อไปได้
ขั้นตอนที่ -9: การนำ JWT ไปใช้:
ตอนนี้เราได้เพิ่มผู้ดูแลระบบแล้ว และส่วนการเข้าสู่ระบบก็เสร็จสิ้นเช่นกัน แต่เพื่อให้ปลอดภัยยิ่งขึ้น เราจะใช้ JWT add_post
และupdate_post
เพื่อป้องกันการเข้าถึงโดยไม่ได้รับอนุญาต บนเทอร์มินัลของคุณ ให้วางโค้ดด้านล่าง:
pipenv install flask-jwt-extended
สิ่งนี้จะติดตั้ง JWT ซึ่งคุณสามารถใช้เพื่อใช้งาน JWT
ตอนนี้เปิด__init__.py
และวางโค้ดด้านล่าง:
app.config['JWT_SECRET_KEY']=ADD YOUR SECRET STRING HERE
jwt=JWTManager(app)
ตอนนี้เปิดไฟล์ Blog_routes.py
และอัปเดตเส้นทางด้านล่าง:
@blogs.route('/delete_post/<int:id>', methods=["DELETE"])
@jwt_required
def delete_post(id):
blog = Blog.query.filter_by(id=id).first()
db.session.delete(blog)
db.session.commit()
return jsonify("Blog was deleted"),200
ในทำนองเดียวกันเพิ่ม @jwt_required
ด้านล่างบรรทัด @blogs.route('/add_post',methods=["POST"])
ขั้นตอนที่ -10: สิ้นสุดการตั้งค่า:
ในท้ายที่สุดคุณ cms/__init__.py
ควรมีลักษณะดังนี้:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS
import click
from flask.cli import with_appcontext
from flask_jwt_extended import JWTManager
from werkzeug.security import generate_password_hash
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///flaskdatabase.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
CORS(app)
db.init_app(app)
app.config['JWT_SECRET_KEY']='YOUR_SECRET_KEY'
jwt=JWTManager(app)
from cms.Blog.blog_routes import blogs
app.register_blueprint(blogs)
from cms.User.user_model import User
from cms.Login.login_route import login
app.register_blueprint(login)
from cms.Tag.tag_model import Tag
@click.command(name='create_admin')
@with_appcontext
def create_admin():
admin=User(email="ANY_EMAIL",password="ANY_PASSWORD")
admin.password = generate_password_hash(admin.password,'sha256',salt_length=12)
db.session.add(admin)
db.session.commit()
app.cli.add_command(create_admin)
return app
เมื่อคุณทำทุกอย่างเสร็จแล้ว คุณเพียงแค่เรียกใช้คำสั่งด้านล่างเพื่อให้ฐานข้อมูลทำงาน วางบนเทอร์มินัลของคุณ:
python
from cms import db,create_app
db.create_all(app=create_app())
สิ่งนี้จะสร้างไฟล์ flaskdatabase.db
ซึ่งประกอบด้วยตารางทั้งหมด ตอนนี้เพื่อเรียกใช้เซิร์ฟเวอร์ API ให้ใช้คำสั่ง:
set FLASK_APP=cms/__init__.py
set FLASK_DEBUG=1
set FLASK_ENV=development
flask create_admin
flask run
และบิงโก!!! คุณพร้อมที่จะทำการเรียก API เพื่อสร้างบล็อกโพสต์ คุณสามารถโคลนโค้ดสำเร็จรูปจากที่เก็บนี้
คำพูดสุดท้าย
ในบทความนี้ เราได้กล่าวถึงประเด็นต่างๆ มากมาย เช่น วิธีการเชื่อมต่อ SQL, วิธีเรียกใช้แบบสอบถาม SQL โดยใช้ SQLalchemy, การใช้งาน JWT และอื่นๆ ทั้งหมดเพื่อสร้าง CMS ที่ไม่มีส่วนหัว คุณสามารถพูดได้ว่านี่เป็นบทความแบบครบวงจร ซึ่งสามารถช่วยให้คุณเริ่มหยิบแนวคิดขั้นสูงใน Python-Flask
ทั้งนี้บริษัทเคแอนด์โอ จึงได้มุ่งเน้นการจัดการแก้ไขปัญหา จัดการเอกสาร ด้านเอกสารขององค์กรมาอย่างยาวนาน และ ให้ความสำคัญกับด้านงานเอกสาร ต่อลูกค้าเป็นอย่างดี จนถึงปัจจุบันก็ได้ความยอมรับจากองค์กร ขนาดใหญ่ ขนาดกลาง และขนาดเล็กมากมาย จึงใคร่ขออาสาดูและปัญหาด้านเอกสารให้กับองค์กรของท่านอย่างสุดความสามารถ เพราะเราเป็นหนึ่งในธุรกิจ ระบบจัดเก็บเอกสาร ที่ท่านไว้ใจได้
สอบถามได้สบายใจทั้ง เรื่องค่าบริการ ราคา และ งบประมาณ เพราะเป็นราคาที่สุด คุ้มที่สุด
เรามีแอดมินคอยคอบคำถาม 24 ชั้วโมงที่ Line OA ให้คำปรึกษาด้านวางระบบจัดการเอกสารอิเล็กทรอนิกส์ EDMS โดยทีมงานผู้เชี่ยวชาญจาก K&O
ที่มีประสบการณ์มากว่า 15 ปี รวมถึงซอฟต์แวร์ระดับโลก ติดต่อ 0 2 – 8 6 0 – 6 6 5 9 หรือ E m a i l : c s @ k o . i n . t h
หากท่านมีความสนใจ บทความ หรือ Technology สามารถติดต่อได้ตามเบอร์ที่ให้ไว้ด้านล่างนี้
Tel.086-594-5494
Tel.095-919-6699