Django 搭建博客网站-task02:快速搭建网站
Posted Abro.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 搭建博客网站-task02:快速搭建网站相关的知识,希望对你有一定的参考价值。
Django 搭建博客网站
目录
6.2.1 在项目根目录下创建一个 gunicorn_start.sh 文件
前言
由于出现了点小插曲,导致$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 = True
USE_L10N = True
USE_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_name
def __str__(self):
return self.title
2.5 添加到后台
from django.contrib import admin
from .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 文件
pass
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'blog',
'USER': 'blog',
'PASSWORD': '你的密码',
'HOST': '虚拟机的IP',
'PORT': '3306',
}
}
5.3 修改__init__.py 文件
import pymysql
pymysql.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 name
echo "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=true
redirect_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:快速搭建网站的主要内容,如果未能解决你的问题,请参考以下文章