Система управления контентом (CMS) — это программное приложение, используемое для создания, редактирования и управления содержимым веб-сайта. Python имеет множество библиотек и фреймворков, которые помогут вам создать мощную систему CMS. В этом уроке мы расскажем, как создать собственную простую систему CMS, используя некоторые популярные библиотеки Python. Мы будем использовать следующие библиотеки:
первый,Убедитесь, что оно установлено на вашем компьютереPython。ты можешь начать сPythonОфициальный сайтhttps://www.python.org/ Загрузите и установите последнюю версию Python.
Затем используйте pip для установки необходимых библиотек Python. Откройте терминал (или командную строку) и выполните следующую команду:
bashCopy codepip install flask sqlalchemy flask-sqlalchemy flask-wtf
Создайте новую папку для хранения вашего проекта.,и создайте файл с именемapp.py
изPythonдокумент。существоватьapp.py
Напишите следующий код в:
pythonCopy codefrom flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Welcome to My CMS!'
if __name__ == '__main__':
app.run(debug=True)
Этот код создает простое приложение Flask и определяет базовый маршрут для отображения приветственного сообщения.
мы будем использоватьSQLiteкак мыизбаза данных。существоватьapp.py
Добавьте следующий код для настройки базы данных:
pythonCopy codefrom flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
Это скажет Flask использовать базу данных SQLite.,и指定база данныхдокументиз Путьsite.db
。Следующий,Мы создадим модель для представления контента в нашей CMS.
существоватьapp.py
документиз Добавьте следующий код в конце:
pythonCopy codefrom datetime import datetime
class Post(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)
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
def __repr__(self):
return f"Post('{self.title}', '{self.date_posted}')"
Этот код определяет файл с именемPost
из Модель,это будетсуществоватьбаза данных中创建一个名为posts
излист。Эта форма содержитid
、title
、content
иdate_posted
Поле,Представлять статьи соответственноизтолькоID、заголовок、Содержание и дата публикации.
мы будем использоватьFlask-WTFчтобы создать форму。существоватьapp.py
Добавьте следующий код в:
pythonCopy codefrom flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
class PostForm(FlaskForm):
title = StringField('Title', validators=[DataRequired()])
content = StringField('Content', validators=[DataRequired()])
submit = SubmitField('Post')
Этот код определяет файл с именемPostForm
из Класс формы,который содержитtitle
иcontent
Полеи кнопка отправки。
Сейчас,Мы напишем функции просмотра для работы с сайтом.изразные страницы。существоватьapp.py
Добавьте следующий код в:
pythonCopy codefrom flask import render_template, url_for, redirect
from .forms import PostForm
from .models import Post
@app.route('/posts')
def posts():
posts = Post.query.all()
return render_template('posts.html', posts=posts)
@app.route('/post/new', methods=['GET', 'POST'])
def new_post():
form = PostForm()
if form.validate_on_submit():
post = Post(title=form.title.data, content=form.content.data)
db.session.add(post)
db.session.commit()
return redirect(url_for('posts'))
return render_template('create_post.html', form=form)
Этот код создает два маршрута:/posts
Используется для отображения всех статей.,/post/new
для создания новыхизстатья。posts
Функция получает все статьи из базы данных и передает их функции с именемposts.html
из Шаблон для рендеринга。new_post
函数负责处理创建新статьяизотправка формы。Если проверка формы прошла успешно,Новый объект статьи будет создан и сохранен в базе данных.,Затем перенаправьте на страницу со списком статей.
наконец,Нам нужно создать страницу для рендерингаизшаблон。существоватьпроектдокумент Создайте папку с именемtemplates
издокументпапка,исуществоватьчто создает дваHTMLдокумент:posts.html
иcreate_post.html
。
posts.html
:
htmlCopy code<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Posts</title>
</head>
<body>
<h1>Posts</h1>
<ul>
{% for post in posts %}
<li>{{ post.title }}</li>
{% endfor %}
</ul>
</body>
</html>
create_post.html
:
htmlCopy code<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Create Post</title>
</head>
<body>
<h1>Create Post</h1>
<form method="POST">
{{ form.hidden_tag() }}
<p>{{ form.title.label }} {{ form.title() }}</p>
<p>{{ form.content.label }} {{ form.content() }}</p>
<p>{{ form.submit() }}</p>
</form>
</body>
</html>
Эти шаблоны используют язык шаблонов Flask, что позволяет нам вставлять динамический контент в HTML.
Теперь наше приложение CMS готово. в папке проекта