|
|
# DjangoBlog
|
|
|
|
|
|
🌍
|
|
|
*[English](README-en.md) ∙ [简体中文](README.md)*
|
|
|
|
|
|
A blog system based on `python3.8` and `Django4.0`.
|
|
|
|
|
|
|
|
|
[](https://github.com/liangliangyy/DjangoBlog/actions/workflows/django.yml) [](https://github.com/liangliangyy/DjangoBlog/actions/workflows/codeql-analysis.yml) [](https://codecov.io/gh/liangliangyy/DjangoBlog) []()
|
|
|
|
|
|
|
|
|
## Main Features:
|
|
|
- Articles, Pages, Categories, Tags(Add, Delete, Edit), edc. Articles and pages support `Markdown` and highlighting.
|
|
|
- Articles support full-text search.
|
|
|
- Complete comment feature, include posting reply comment and email notification. `Markdown` supporting.
|
|
|
- Sidebar feature: new articles, most readings, tags, etc.
|
|
|
- OAuth Login supported, including Google, GitHub, Facebook, Weibo, QQ.
|
|
|
- `Memcache` supported, with cache auto refresh.
|
|
|
- Simple SEO Features, notify Google and Baidu when there was a new article or other things.
|
|
|
- Simple picture bed feature integrated.
|
|
|
- `django-compressor` integrated, auto-compressed `css`, `js`.
|
|
|
- Website exception email notification. When there is an unhandle exception, system will send an email notification.
|
|
|
- Wechat official account feature integrated. Now, you can use wechat official account to manage your VPS.
|
|
|
|
|
|
## Installation:
|
|
|
Change MySQL client from `pymysql` to `mysqlclient`, more details please reference [pypi](https://pypi.org/project/mysqlclient/) , checkout preperation before installation.
|
|
|
|
|
|
Install via pip: `pip install -Ur requirements.txt`
|
|
|
|
|
|
If you do NOT have `pip`, please use the following methods to install:
|
|
|
- OS X / Linux, run the following commands:
|
|
|
|
|
|
```
|
|
|
curl http://peak.telecommunity.com/dist/ez_setup.py | python
|
|
|
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
|
|
|
```
|
|
|
|
|
|
- Windows:
|
|
|
|
|
|
Download http://peak.telecommunity.com/dist/ez_setup.py and https://raw.github.com/pypa/pip/master/contrib/get-pip.py, and run with python.
|
|
|
|
|
|
### Configuration
|
|
|
Most configurations are in `setting.py`, others are in backend configurations.
|
|
|
|
|
|
I set many `setting` configuration with my environment variables (such as: `SECRET_KEY`, `OAUTH`, `mysql` and some email configuration parts.) and they did NOT been submitted to the `GitHub`. You can change these in the code with your own configuration or just add them into your environment variables.
|
|
|
|
|
|
Files in `test` directory are for `travis` with automatic testing. You do not need to care about this. Or just use it, in this way to integrate `travis` for automatic testing.
|
|
|
|
|
|
In `bin` directory, we have scripts to deploy with `Nginx`+`Gunicorn`+`virtualenv`+`supervisor` on `linux` and `Nginx` configuration file. You can reference with my article
|
|
|
|
|
|
>[DjangoBlog部署教程](https://www.lylinux.net/article/2019/8/5/58.html)
|
|
|
|
|
|
More deploy detail in this article.
|
|
|
|
|
|
## Run
|
|
|
|
|
|
Modify `DjangoBlog/setting.py` with database settings, as following:
|
|
|
|
|
|
```python
|
|
|
DATABASES = {
|
|
|
'default': {
|
|
|
'ENGINE': 'django.db.backends.mysql',
|
|
|
'NAME': 'djangoblog',
|
|
|
'USER': 'root',
|
|
|
'PASSWORD': 'password',
|
|
|
'HOST': 'host',
|
|
|
'PORT': 3306,
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### Create database
|
|
|
Run the following command in MySQL shell:
|
|
|
```sql
|
|
|
CREATE DATABASE `djangoblog` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
|
|
|
```
|
|
|
|
|
|
Run the following commands in Terminal:
|
|
|
```bash
|
|
|
python manage.py makemigrations
|
|
|
python manage.py migrate
|
|
|
```
|
|
|
|
|
|
### Create super user
|
|
|
|
|
|
Run command in terminal:
|
|
|
```bash
|
|
|
python manage.py createsuperuser
|
|
|
```
|
|
|
|
|
|
### Create testing data
|
|
|
Run command in terminal:
|
|
|
```bash
|
|
|
python manage.py create_testdata
|
|
|
```
|
|
|
|
|
|
### Collect static files
|
|
|
Run command in terminal:
|
|
|
```bash
|
|
|
python manage.py collectstatic --noinput
|
|
|
python manage.py compress --force
|
|
|
```
|
|
|
|
|
|
### Getting start to run server
|
|
|
Execute: `python manage.py runserver`
|
|
|
|
|
|
Open up a browser and visit: http://127.0.0.1:8000/ , the you will see the blog.
|
|
|
|
|
|
## More configurations
|
|
|
[More configurations details](/docs/config-en.md)
|
|
|
|
|
|
## About the issues
|
|
|
|
|
|
If you have any *question*, please use Issue or send problem descriptions to my email `liangliangyy#gmail.com`. I will reponse you as soon as possible. And, we recommend you to use Issue.
|
|
|
|
|
|
---
|
|
|
## To Everyone 🙋♀️🙋♂️
|
|
|
If this project helps you, please submit your site address [here](https://github.com/liangliangyy/DjangoBlog/issues/214) to let more people see it.
|
|
|
|
|
|
Your reply will be the driving force for me to continue to update and maintain this project.
|
|
|
|
|
|
🙏🙏🙏
|