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

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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值