Task2:快速搭建网站
准备工作
-
打开VScode,连接WSL,激活虚拟环境;
-
查看宝塔面板地址;
-
输入用户名和密码,登录宝塔面板;
-
点击进入“软件商店”,查看是否已经安装了Nginx和MySQL,设置为首页显示;
-
点击进入“网站”,添加站点,填写相关信息,点击“提交”;
-
报错如下图所示:
解决方法:在终端中执行sudo apt --fix-broken install
-
成功创建站点;
-
点击链接进入根目录,可以查看到四个文件;
-
查看Django版本,新建Django项目,将最外层文件夹改名为:MyBlog;
-
进入项目所在文件夹,启动Django项目
创建APP
- 在终端执行命令:
python manage.py startapp blog
- 将新建的APP和项目进行关联;
(1)更改setting.py文件,在INSTALLED_APPS中添加创建的app名称;
(2)启动项目
- 创建超级管理员
(1)在终端执行同步命令:python manage.py migrate
(2)创建超级管理员命令:python manage.py createsuperuser
(3)在浏览器网址后面加上/admin,输入正确的用户名和密码;
(4)进入后台管理页面,可以看到已经创建的用户;
- 修改后台语言和时区;
在setting.py中找到LANGUAGE_CODE = 'en-us'
更改为LANGUAGE_CODE = 'zh-hans'
。同时可以修改时区,将TIME_ZONE = 'UTC'
更改为TIME_ZONE = 'Asia/Shanghai'
- 在VS code中安装Django插件;
- 创建表,修改models.py 文件;
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
- 添加到后台:修改admin.py文件;
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")
- 同步到数据库;
python manage.py makemigrations
python manage.py migrate
- 在浏览器查看Django管理的相关页面;
编写页面逻辑
- 编写前端页面以及渲染逻辑;
(1)新建文件夹templates,用于存放html页面。
(2)修改setting.py文件:将'DIRS':[]
更改为‘DIRS ': [os.path.join(BASE_DIR,"templates")],
注意要在setting.py文件最上方导入os库:import os
(3)新建index.html
(4)修改views.py文件
(5)修改urls.py文件: 将我们定义的方法引入进来,然后定义好访问什么路径来执行这个方法;
- 添加文章详情页面
(1)新建content.html
<html>
<head>
<title>{{blog.title}}</title>
</head>
<body>
<a href="/">回到首页</a>
<h1>{{blog.title}}</h1>
<div>
{{blog.content}}
</div>
<div>
由{{blog.author}}创建于{{blog.creat_time}}
</div>
</body>
</html>
(2)编写业务逻辑views.py
from django.shortcuts import render
from .models import Blog
# Create your views here.
def index(request):
blogs = Blog.objects.all().order_by("-creat_time")
return render(request,"index.html", {'blogs':blogs})
def read_blog(request,id):
blog = Blog.objects.get(id=id)
return render(request,'content.html',{'blog':blog})
(3)修改urls.py
from django.contrib import admin
from django.urls import path
from blog import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='index'),
path('read_blog/<int:id>', views.read_blog, name='read_blog')
]
在浏览器查看页面显示效果