Django 搭建博客网站-task02:快速搭建网站

Posted Abro.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 搭建博客网站-task02:快速搭建网站相关的知识,希望对你有一定的参考价值。

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 = 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:快速搭建网站的主要内容,如果未能解决你的问题,请参考以下文章

Django 搭建博客网站-task01:基础知识

Django 搭建博客网站-task03:Models的编写

Django搭建博客网站

0 - Django 博客教程:前言

0 - Django 博客教程:前言

Django搭建博客网站