Task2 Django快速搭建一个简单的文章发布发布网站

news/2024/5/13 10:25:24/文章来源:https://blog.csdn.net/qq_44285092/article/details/118059951

VScode Django项目插件

  • Pylance
  • Django
  • Live Server

一、Django项目与宝塔站点的绑定

1.1 VScode中创建Django项目

  • ① 进入所创建的Python环境的文件目录,激活当前Python环境
cd pyenv/ # 进入Python环境的目录
source bin/activate
  • ② 创建一个名为config的应用
django-admin startproject config
  • ③ 修改外层的文件夹名为你所要搭建的项目名称,如将config改为MyBlog

之所以需要这样创建,是因为内层配置config与外层项目MyBlog作出区分,这里也可以无需这样,个人开发习惯。

1.2 VScode中创建Django应用

  • cd进入到MyBlog项目里面,并用ls命令确保确保当前目录中是否存在manage.py文件,若存在则可以创建应用
python manage.py startapp myblog
  • ⑤ 查看config中的settings.py文件中,是否添加了当前应用,没有则添加
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','myblog', # 若无,则手动添加,将所创建的应用名,依次放置在后面即可
]

1.3 Django项目与宝塔站点的绑定

  • ⑥ 确保宝塔里面安装了数据库MySQL 8.0(Django3.x需要高版本的MySQL才能连接成功)和http服务器Nginx 1.19
  • ⑦ 创建网站站点并与Django项目绑定

二、Django后台编写

2.1 Django创建超级管理员

  • ① 同步数据库后才能创建成果,自己未创建数据表,也需要先同步,因为Django框架中默认会创建一部分数据表
python manage.py makemigrations # 自己创建了数据表,第一次需要执行
python manage.py migrate # 数据迁移命令
  • ② 创建超级管理员
python manage.py createsuperuser

根据提示进行输入。成功后可以看到如下画面:

2.2 Django修改后台语言

LANGUAGE_CODE = 'zh-hans' # LANGUAGE_CODE :语言代码,
TIME_ZONE = 'UTC' # TIME_ZONE:时区
USE_I18N = True
USE_L10N = True
USE_TZ = True

2.3 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

2.4 Django表添加到后台

# 修改 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")

2.5 Django同步到数据库

# Terminal中
python manage.py makemigrations
python manage.py migrate

注意一行一行的输入

三、Django页面编写

3.1 添加页面模板文件夹

在添加 os.path.join(BASE_DIR, "templates")前需要先将os库导入进来

# 修改 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',],},},
]

3.2 修改views.py文件

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

3.3 修改 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"),
]

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

3.4 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>
  • 文章详情页面
# 新建 content.html
<html><head><title>我的首页</title></head><body><a href="/" style="float: right;">回到首页</a><h1>{{blog.title}}</h1><div>{{blog.content}}</div></body>
</html>
  • 编写业务逻辑 views.py
def read_blog(request,id):print(f"{id}:我是通过前端点击链接来的")blog = Blog.objects.get(id=id)return render(request, "content.html", {"blog":blog})# 多个参数可用locals()
  • 修改 urls.py
urlpatterns = [path('admin/', admin.site.urls),path("", index, name="index"),path("read/<int:id>", read_blog, name="read_blog"),
]

四、Django项目部署

4.1 使用宝塔中的MySQL流程

  • ① 在项目环境中安装 pymsql
pip install pymysql
  • ② 修改Settings.py文件
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'blog', # 数据库名称'USER': 'blog', # 用户名'PASSWORD': '你的密码', # 密码'HOST': '虚拟机的IP', # 内网IP地址,ip a可查看'PORT': '3306', # mysql默认的端口号}
}
  • ③ 修改__init__.py文件
import pymysql
pymysql.install_as_MySQLdb()
  • ④ 修改宝塔中所创数据库的权限或者指定IP,在此执行即可成功

4.2 安装两个必要的应用

  • Superivisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启,【Supervisor 使用详解】
deactivate # 退出python虚拟环境,退出后才能安装
sudo apt install supervisor -y
  • GunicornGreen Unicorn的简称,它是一个 UNIX下的 WSGI HTTP 服务器,它是一个 移植自RubyUnicorn项目的 pre-fork worker模型,【Gunicorn使用介绍】
source pyenv/bin/activate # 激活python环境后安装
pip install gunicorn

4.3 Gunicorn相关配置

  • ① 在Django项目根目录下创建一个gunicorn_start.sh文件
#!/bin/bash
NAME="MyBlog" # 修改处1,Django项目名
DJANGODIR=/home/forget/Desktop/DjangoDemo/MyBlog # 修改处2,Django项目路径
USER=forget # 修改处3,系统用户名,whoami可查询
GROUP=forget # 修改处4,the group to run as ,whoami可查询
NUM_WORKERS=1 # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=config.settings # which settings file should Django use,修改处5,Django项目配置名要一致
DJANGO_WSGI_MODULE=config.wsgi # WSGI module name 修改处6,Django项目配置名要一致echo "Starting $NAME as `whoami`"# Activate the virtual environment
cd $DJANGODIR
source /home/forget/Desktop/DjangoDemo/pyenv/bin/activate # 修改处7,django项目所在的虚拟环境,此处相当于去激活环境 
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 /home/forget/Desktop/DjangoDemo/env/bin/gunicorn  ${DJANGO_WSGI_MODULE}:application \ # 修改处8
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--log-level=debug \
--log-file=-
  • 修改权限,可通过命令,也可通过宝塔来修改
chmod +x gunicorn_start.sh
  • ③ 运行
./gunicorn_start.sh

4.4 后台静态样式丢失问题

  • ① 在项目目录下新建一个 static 的文件夹
  • ② 添加静态文件的配置
# 修改 settings.py
STATIC_ROOT = os.path.join(BASE_DIR, "static")
  • ③ 运行命令进行后台静态文件收集
python manage.py collectstatic

4.5 配置 Nginx

# 静态文件配置location /static/ {alias /home/forget/Desktop/DjangoDemo/MyBlog/static/; # 修改为自己的路径expires max;access_log off;log_not_found off;}# 反向代理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;}}

4.6 配置 Supervisor

  • 在项目中先创建一个log文件夹,用于储存日志
mkdir log
  • Terminal中输入
sudo vim /etc/supervisor/conf.d/myblog.conf

vim编辑器先按i,此时左下角就会出现INSERT

  • 并写入如下内容
[program:myblog]
command = /home/forget/Desktop/DjangoDemo/MyBlog/gunicorn_start.sh
user = forget
autostart=true
autorestart=true
redirect_stderr = true
stdout_logfile = /home/forget/Desktop/DjangoDemo/MyBlog/log/myblog.log
stderr_logfile = /home/forget/Desktop/DjangoDemo/MyBlog/log/myblog.err

同样也要修改成为自己的用户名,接着Esc,再按住shift + :,输入wq,写入退出即可

若需要修改,也可以在宝塔中直接修改

  • 最后更新一下我们设置的一系列内容
sudo supervisorctl update
sudo supervisorctl reload

之所以需要创建此,是因为创建后就不需要在前台启动,在后台通过Nginx启动即可。只需要服务器开启即可访问等一系列操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_807044.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Task3 Django搭建个人博客网站

一、个人博客网站模块划分 常见的博客网站的模块有&#xff1a;首页、文章摘要&#xff0c;导航、点击加载更多、分页、友情链接、推荐文章、文章的点赞、收藏、分享、评论等等。我们可以根据自己的需求来定制一些功能&#xff0c;实现其中的一部分功能来开发个人博客。 具体的…

社交网站界面设计

社交网站界面设计 基本信息 原书名&#xff1a; Designing Social Interfaces 原出版社&#xff1a; Yahoo Press 作者&#xff1a; &#xff08;美&#xff09;Christian Crumlish Erin Malone 译者&#xff1a; 樊旺斌 师蓉 出版社&#xff1a;机械工业出版社 ISBN&…

影视网站被黑客攻击,数百万用户账户被曝光

每天我们都听到有新数据被破坏&#xff0c;每天警告用户个人信息被曝光&#xff0c;他们应该重置密码&#xff0c;并加强安全措施来保护黑客根据他们的信息破解。 今天关注的是一个世界上最大的视频网站&#xff0c;影片下载&#xff0c;上传&#xff0c;观看和分享视频&#x…

[转载]使用IntelliJ IDEA开发SpringMVC网站(一)开发环境

访问GitHub下载最新源码&#xff1a;https://github.com/gaussic/Sp... 文章已针对IDEA 2016做了一定的更新&#xff0c;部分更新较为重要&#xff0c;请重新阅读文章并下载最新源码。另外&#xff1a;文中的附图部分仍然为旧版本&#xff0c;请参照自身版本进行配置。 前言 由…

一个自动上色网站

同样是机器学习的一个应用 以前的可以看这个 http://blog.csdn.net/shenmifangke/article/details/56515413 网站是http://color.kvfrans.com/draw 貌似很早就有了 最近体验了下 下面是 上色的测试 又试了试不指认颜色的&#xff0c;其实效果也不错

从零开始利用vue-cli搭建简单音乐网站(八)

这是完成了预想中的最后两个功能&#xff1a;歌曲评论以及歌曲搜索。 1、评论效果&#xff1a; 用户点击评论按钮&#xff0c;评论框获取焦点。 输入之后点击提交&#xff0c;下方显示评论&#xff0c;用户名称以及日期。相应的用户也可以删除自己评论。 当然只能删除自己的评…

从零开始利用vue-cli搭建简单音乐网站(四)

上一篇文章中说到这一篇博客会实现音乐播放功能&#xff0c;只是令我意外的是&#xff0c;如果利用h5的audio标签&#xff0c;几行代码就实现了......先来看一下最终效果吧。 这里直接用了audio标签&#xff0c;样式没有怎么管&#xff0c;能获得音乐文件并且播放就足够了。 所…

免费建站系统 Joomla 3.9.5 发布

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; >>> Joomla 3.9.5现已推出。这是针对3.x系列Joomla的安全修复程序版本&#xff0c;它解决了三个安全漏洞&#xff0c;包含20多个错误修复和改进。 什么是3.9.5&#xff1f; Joomla 3.9…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书&#xff0c;就应该有所收获&#xff0c;有所总结&#xff0c;最近把《大型网站技术架构》一书给看完了&#xff0c;给人的印象实在深刻&#xff0c;再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

网站优化--让你的网页飞起来

摘要&#xff1a; 网站快要上线了&#xff0c;但是网站打开速度很慢怎么办&#xff1f;这里介绍一下对网页进行优化的方法和技巧&#xff0c;加快网页浏览速度&#xff0c;让网页速度飞起来 测试网页性能工具 ⑴Page Speed&#xff1a; 是开源 Firefox/Firebug 插件。网站管理员…

网站优化--让你的网页飞起来

摘要&#xff1a; 网站快要上线了&#xff0c;但是网站打开速度很慢怎么办&#xff1f;这里介绍一下对网页进行优化的方法和技巧&#xff0c;加快网页浏览速度&#xff0c;让网页速度飞起来 测试网页性能工具 ⑴Page Speed&#xff1a; 是开源 Firefox/Firebug 插件。网站管理员…

让网站飞起来02--服务器缓存

前提提要&#xff1a; 第一个介绍的是《让网站飞起来01---浏览器缓存技术》 介绍服务器&#xff0c;肯定要先支持服务器在网站架构中的位置和作用&#xff0c;然后在介绍几种常见的服务器缓存配置。 正文 对服务器在网站中位置作用有个大概了解&#xff1a;lamp架构图 上图主要…

Digital Ocean 搭建属于自己的网站

首先&#xff0c;需要Digital Ocean账号申请以及环境搭建的参考博客&#xff1a;https://blog.csdn.net/hunzhangzui9837/article/details/85209245 下面&#xff0c;开始Digital Ocean 网站搭建 1、WDCP的安装和管理 WDCP相当于一个服务器管理界面&#xff0c;可以直接在we…

Mozilla出了个网站安全评估工具 93%的网站居然都不合格

2019独角兽企业重金招聘Python工程师标准>>> Mozilla的安全工程师April King发现&#xff0c;世界上绝大多数的网站 - 高达93.45&#xff05; - 并没有实施许多现代安全技术&#xff0c;为用户提供安全的连接&#xff0c;并保护他们免受跨站点的攻击脚本&#xff08…

构架高性能WEB网站的几点知识

构架高性能WEB网站的几点知识 前言&#xff1a; 对于构架高性能的web网站大家都很感兴趣&#xff0c;本文从几点粗谈高性能web网站需要考虑的问题。 HTML静态化 什么是html静态化&#xff1f; 说得简单点&#xff0c;就是把所有不是.htm或者.html的页面改为.htm或者.html 1.纯静…

高性能建站之前端优化篇

高性能建站之前端优化篇 2011-10-25 17:50 by PHP淮北, 560 visits,收藏,编辑 前言&#xff1a; 这算是对前端优化的总结吧&#xff0c;之前零零星星总结和学习&#xff0c;这次做一个完整的总结。 测试网页性能工具 ⑴Page Speed&#xff1a; 谷歌开发的工具&#xff0c;网…

8个应该去逛逛JQuery的学习网站

根据国外科技网站 W3Techs 一项调查了近100万个网站数据显示&#xff0c;jQuery是目前最流行的 JavaScript 库。对于初学者来说&#xff0c;有的时候很难找到一个好的学习jQuery的网站&#xff0c;所以本文收集了8个很棒的 jQuery 学习网站推荐给大家。 1. Learning jQuery 最…

Hexo博客yilia主题使用cnzz统计网站访问量

使用友盟第三方的统计插件&#xff0c;网址&#xff1a;http://www.umeng.com/ 进入网站先注册账号然后根据下列图片进入添加站点。 添加站点&#xff0c;自己搭建的博客&#xff0c;需要统计访问量的网站(这里加入我的博客网站)&#xff0c;然后点击统计代码进入代码页 代码页…

网站刷关键词_关键词快速排名靠谱吗?应该如何判断

企业要想在竞争激烈的市场中&#xff0c;赢得更多用户的关注&#xff0c;如果没有把网站的排名优化到显眼的地方&#xff0c;是很难实现变现的。如果想提升网站的排名&#xff0c;通过不断优化网站关键词而实现的。企业想快速实现关键词排名&#xff0c;于是网络上就出现很多“…

Linux系列-Red Hat5平台下的LAMP网站服务搭建(一

Linux系列-Red Hat5平台下的LAMP网站服务搭建&#xff08;一&#xff09; 编译安装Apache服务器&httpd服务的基本配置 LAMP架构是目前最为成熟的一种企业网站应用模式&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够…