Django 搭建博客网站


目录

Django 搭建博客网站

前言

一、创建 APP

二、将新建的 APP 和项目进行关联

2.1 修改的文件名是 settings.py

2.2 创建超级管理员

2.3 修改后台语言

2.4 创建表

2.5 添加到后台

2.6 同步到数据库

三、编写页面逻辑

3.1 添加页面模板文件夹

四、添加文章详情页面

4.1 新建 content.html

4.2 编写业务逻辑 views.py

4.3 修改 urls.py

五、部署

5.1 在$vscode$上安装 PyMysql

5.2 修改 Settings.py 文件

5.3 修改__init__.py 文件

六、安装一些需要的应用

6.1 suppervisor

6.2. 在虚拟环境安装 gunicorn

6.2.1 在项目根目录下创建一个 gunicorn_start.sh 文件

6.2.2 修改权限

6.2.3 运行

6.3 配置 Nginx

6.4 配置 Supervisor

总结


前言

由于出现了点小插曲,导致$vscode$连不上虚拟机,现在只提供一下操作要用到的命令,等我调试好,后续会更新文章;-)


一、创建 APP

python manage.py startapp blog

要确保在有 manage.py 文件的目录下执行

二、将新建的 APP 和项目进行关联

2.1 修改的文件名是 settings.py

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','blog',
]

最后一行的 $blog$ 就是我们刚刚创建的 $APP$

2.2 创建超级管理员

python manage.py sreatesuperuser

但是在创建前应该在$vscode$上先同步数据库

python manage.py migrate

2.3 修改后台语言

LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'UTC'USE_I18N = TrueUSE_L10N = TrueUSE_TZ = True

LANGUAGE_CODE :语言代码,

TIME_ZONE:时区

2.4 创建表

from django.db import models# Create your models here.class Blog(models.Model):title = models.CharField(max_length=50, verbose_name="标题")content = models.TextField(verbose_name="文章内容", default="")count = models.IntegerField(verbose_name="阅读次数", default=0)creat_time = models.DateTimeField(auto_now=True, verbose_name="创建时间")class Meta:verbose_name = '博客管理'verbose_name_plural = verbose_namedef __str__(self):return self.title

2.5 添加到后台

from django.contrib import adminfrom .models import Blog
# Register your models here.@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):list_display=("title", "creat_time", "count")

2.6 同步到数据库

python manage.py makemigrations
python manage.py migrate

三、编写页面逻辑

3.1 添加页面模板文件夹

修改 settings.py 文件

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, "templates")],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]

【注意】在添加 os.path.join(BASE_DIR, "templates")前记得先经 os 库导入进来

修改 views.py 文件

from django.shortcuts import render# Create your views here.def index(request):return render(request, "index.html")

修改 urls.py 文件

from os import name
from django.contrib import admin
from django.urls import path
from blog.views import index
urlpatterns = [path('admin/', admin.site.urls),path("", index, name="index"),]

将我们定义的方法引入进来,然后定义好访问什么路径来执行这个方法

在 $templates$ 文件夹下创建一个 $html$ 文件

<html><head><title>我的首页</title></head><body><h1>欢迎来到我的网站!</h1><ul>{% for blog in blogs %}<li><a href="{% url 'read_blog' blog.id %}">{{blog.title}}</a></li><p>创建于    {{blog.creat_time}}</p>{% endfor %}</ul></body>
</html>

便可访问成功!

四、添加文章详情页面

4.1 新建 content.html

<html><head><title>我的首页</title></head><body><a href="/" style="float: right;">回到首页</a><h1>{{blog.title}}</h1><div>{{blog.content}}</div></body>
</html>

4.2 编写业务逻辑 views.py

def read_blog(request,id):print(f"{id}:我是通过前端点击链接来的")blog = Blog.objects.get(id=id)return render(request, "content.html", {"blog":blog})

4.3 修改 urls.py

pass
urlpatterns = [path('admin/', admin.site.urls),path("", index, name="index"),path("read/<int:id>", read_blog, name="read_blog"),]

五、部署

5.1 在 $vscode$ 上安装 PyMysql

5.2 修改 Settings.py 文件

passDATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'blog','USER': 'blog','PASSWORD': '你的密码','HOST': '虚拟机的IP','PORT': '3306',}
}

5.3 修改__init__.py 文件

import pymysqlpymysql.install_as_MySQLdb()

六、安装一些需要的应用

6.1.suppervisor

sudo apt install supervisor -y

6.2. 在虚拟环境安装 gunicorn

pip install gunicorn

它的配置要比用 uwsgi 方便很多

6.2.1 在项目根目录下创建一个 gunicorn_start.sh 文件

NAME="MyBlog"
DJANGODIR=********/MyBlog #Django project directory
USER=server # the user to run as
GROUP=server # the group to run as
NUM_WORKERS=1 # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=config.settings # which settings file should Django use
DJANGO_WSGI_MODULE=config.wsgi # WSGI module nameecho "Starting $NAME as `whoami`"# Activate the virtual environment
cd $DJANGODIR
source ********/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec *******/bin/gunicorn  ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--log-level=debug \
--log-file=-

USER=server # the user to run as

GROUP=server # the group to run as

这里的用户名要改为自己的比如:cw

6.2.2 修改权限

chmod +x gunicorn_start.sh

6.2.3 运行

./gunicorn_start.sh

6.3 配置 Nginx

location / {proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-NginX-Proxy true;proxy_redirect off;if (!-f $request_filename) {proxy_pass http://127.0.0.1:8000;break;}}

6.4 配置 Supervisor

sudo vim /etc/supervisor/conf.d/myblog.conf

并写入如下内容

[program:myblog]
command = *******/gunicorn_start.sh
user = server
autostart=true
autorestart=trueredirect_stderr = true
stdout_logfile = /var/log/myblog.log
stderr_logfile=/var/log/myblog.err

user = server

同样也要修改成为自己的用户名

最后在虚拟机上更新一下我们设置的一系列内容

sudo supervisorctl update
sudo supervisorctl reload

总结

出现了点差错,不好意思了LOL

后续调试好会重新更新文章呜呜呜。

Django 搭建博客网站-task02:快速搭建网站相关推荐

  1. 基于Django的博客兼学术主页管理网站

    基于Django的博客兼学术主页管理网站 摘要: 本系统基于后端Django框架和前端HTML页面,使用MVT设计模式构建了博客兼学术主页管理网站.该网站具有编写博客.阅读博客.点赞评论其他人博客的博 ...

  2. 轻量版 markdown博客_如何快速搭建自己的博客平台

    如何快速搭建自己的博客平台 对于一个程序员来说,搭建一个属于自己的博客平台是非常有意义的事情.首先,博客可以记录自己的成长历程,也是对自己一段时间学习和工作的总结和沉淀:其他,通过博客可以营销自己,增 ...

  3. Github Pages + Jekyll 独立博客一小时快速搭建上线指南

    只要一小时?! 人生道路上布满了坑,于是有了人生导师.  美丽的地球上布满了坑,于是有了Google Earth.  使用Github Pages搭建独立博客的过程中布满了坑,所以有了这篇指南. 我在 ...

  4. ghost博客mysql_centos 上快速搭建ghost博客方法分享

    1. 介绍 Ghost 是一套基于 Node.js 构建的开源博客平台,具有易用的书写界面和体验,博客内容默认采用 Markdown 语法书写,目标是取代臃肿的 Wordpress.本篇文章主要是介绍 ...

  5. github page hexo博客gitee_GitHub+hexo快速搭建个人博客

    写博客的好处是我们用博客表达自己.升华自己. 平时学习新知识总是经常性会遗忘部分内容,使用过有道云,印象笔记,公众号,缺金社区,csdn,Github,码云等等记录了零零散散一些内容.所以准备使用he ...

  6. 从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑

    前言      文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章的评论,在里面能看出有很多种声音,有支持的我的朋 ...

  7. 【个人博客】Astro 快速搭建个人博客

    Astro 介绍 Astro 是一个多合一的 Web 框架,用于构建快速.以 内容为中心的网站. 以内容为中心:Astro 专为内容丰富的网站而设计. 服务器优先:网站在服务器上呈现 HTML 时运行 ...

  8. Hexo+NexT(零):最全Hexo+Next搭建博客教程

    欢迎访问博主博客www.guide2it.com 快速.简洁且高效的博客框架 有位大神说,喜欢写博客的人的人,折腾博客会经历三个阶段.找到一个免费空间,搭建一个博客,很欣喜,很有成就感,此为一阶段:受 ...

  9. Django个人博客开发 | 前言

    本渣渣不专注技术,只专注使用技术,不是一个资深的coder,是一个不折不扣的copier 1.前言 自学 Python,始于 Django 框架,Scrapy 框架,elasticsearch搜索引擎 ...

最新文章

  1. 学单片机之前要学什么?C语言和单片机有什么关系?
  2. 归并排序详解(python实现)
  3. 数据库多对多关系示例 - 使用sqlite演示
  4. 定价错误: 必要条件 MWST 丢失
  5. [原创]DebugTools系列(4):AQTime经验总结
  6. DB2中admin_cmd执行load
  7. mysql-外键操作-级联删除
  8. 腾讯OD组织发展全景图.ppt
  9. 利用 MPI 进行蒙特卡洛模拟
  10. python3库安装_Python3 Requirements库安装过程
  11. java读取文件乱码
  12. tcp协议及工作原理浅析_详解TCP/IP网络协议栈底层原理到徒手实现
  13. 【2019南京icpc网络赛 I】Washing clothes【李超树】
  14. 【Note2】MPS/PXE/ADS/INA电流电压,i2c设备在位和读,samba/nfs,ntp/log/me/树莓派,pip/office,vr,i2ctool,大数据,pam
  15. VS2012旗舰版下载地址和安装密钥
  16. 文字排版中的字号尺寸对照表(清晰、准确(含两个版本对比)、可复制)
  17. Python爬虫实战——签名软件设计(一)python POST模拟网页按钮点击
  18. OnlyBill 简易记账软件(续)
  19. opencv 反色处理
  20. Promise异步编程

热门文章

  1. android h xh xxh 分辨率,android vector入门
  2. Kubernetes 核心组件 kubelet
  3. Java包(package)的命名规范 规则
  4. 【译】antirez:Redis6将支持客户端缓存
  5. p4-hlir和p4c-bm 编译工具
  6. Redis命令详解:Connection
  7. 学习Linux命令(52)
  8. 2022-3-31 Leetcode 415.字符串相加
  9. 一起学CC3200之OTA固件升级(使用HTTP方式下载APP:初级篇)
  10. C#中AES加解密和zip压缩