基于django的个人博客开发
基于django开发个人博客系统
这里只放了一个应用的相关操作方式,当然有问题或者错误都可以评论找我们可以一起debug哦
这是个人博客开发的展示哦
1.配置相关环境开发利用python3.7以及navicate2.2效果较好,下载并为其配置相关环境变量
2.项目搭建
<1创建项目包myblog(可以用便捷方式在你创建的代码存储文件的目录框输入cmd调取本文件下的命令窗口输入admin startproject myblog回车将自动创建好项目包可以利用tree myblog命令检测建立是否成功)
<2进入pycharm(可以是其他本次以其为例)file—>open–>找到自己建立的项目的文件位置(要找到myblog的位置)确定将项目在编辑器里打开,点击运行就可以访问到django的欢迎界面
<3创建相关应用其实就是要实现博客功能的元素比如博文,使用者等等,建立时可以在编译器自带的命令行(可以使用别的但必需是在myblog即项目文档目录下)输入python manage.py startapp user同样方式创建别的应用,创建好之后每一个应用会有自带的models.py,(后期建表)admin.py(后期注册在后台部署)views.py(用于页面显示)
<4创建好应用之后必须在myblog下的setting.py文件中进行注册具体的在INSTALLDE_APP代码下以相同的格式添加自己创建的app即可
<4为了后期更加方便的展示页面可以对时间区及语言进行调整即将下面两行代码进行调整也在setting.py文件中哦LANGUAGE_COOE=‘zh-hans’,TIME_ZONE=‘Asia/Shanghai’,USE_TZ=False
3.对子应用进行操作以其中一个应用为例
<1为用户表添加相关字段即属性创建表在改应用下models.py中写
from django.db import models
#由于手动扩展自带的用户模型类,需要执行下面两行
from django.contrib.auth import get_user_model
from django.utils.html import format_html
from mdeditor.fields import MDTextField
from django.urls import reverse
User=get_user_model()class Blogs(models.Model):STATUS = ((1, '公开'),(2, '私密'),)#标题 摘要 内容 (分类 所属标签) 封面图片 阅读量 点赞评论量 (作者) 状态 是否置顶 发表日期 最后修改时间title = models.CharField(max_length=100,verbose_name='标题')abstract = models.CharField(max_length=255,verbose_name='摘要')content = MDTextField(verbose_name='内容')#使用MD富文本编辑器#小写的m表示的时中式数字而非img = models.ImageField(upload_to='blogs/%Y/%m',verbose_name='封面图')readnum = models.IntegerField(default=0,verbose_name='阅读量' )commentnum = models.IntegerField(default=0, verbose_name='评论量')#状态公开1,私密2,choices参数不加引号并且必需是元组或列表status = models.IntegerField(choices=STATUS,verbose_name='状态')#删除()逻辑删除而非物理删除isDdelete = models.BooleanField(default=False,verbose_name='是否删除')isTop = models.BooleanField(default=False,verbose_name='是否置顶')createtime = models.DateTimeField(auto_now_add=True,verbose_name='创建时间')updatetime = models.DateTimeField(auto_now_add=True, verbose_name='修改时间')blogtype = models.ForeignKey("type",on_delete=models.PROTECT,verbose_name='所属分类')user = models.ForeignKey(User,on_delete= models.PROTECT,verbose_name='作者')tags = models.ManyToManyField("tags",related_name="tags",verbose_name='标签')class Meta:verbose_name = "博文信息"verbose_name_plural = verbose_nameordering = ('isTop','-createtime',)#必须是元组或列表def __str__(self):return self.title
嗯这里代码中有一部分导包语句是后期才会用的哦这里放上方便大家后期参考
<2在项目目录下创建一个media文件夹将要用到的图片等放在这里,但要让其自己找到图片在这里还需要在setting.py中进行相关配置
#在项目的根目录下创建了存放上传资源的目录:media
#相关配置
MEDIA_URL = 'media/'
#BASE_ROOT:是项目的根目录下面做了根目录和存放目录(路径)的连接
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
以及在总的url.py进行相关配置以相同格式添加
from django.contrib import admin
from django.urls import path, re_path, include
from django.views.static import serve
from myblog import settings
urlpatterns = [#http://127.0.0.1.8000/admin#协议,IP,端口PORT不参与匹配,匹配过的内容不再参与匹配,逐一匹配直到匹配到未知这返回404path('admin/', admin.site.urls),
#media配置——配合settings中的MEDIA_ROOT的配置,就可以在浏览器的地址栏访问media文件夹及里面的文件了re_path(r'media/(?P<path>.*)$',serve,{'document_root':settings.MEDIA_ROOT}),]
<3在字段添加完毕后就进入了创表的关键时候了在编辑器自带 的命令行执行(p在迁移之前要下载一个pillow包)
python manage.py makemigrations
python manage.py migrate
实现迁移文件的生成以及迁移在数据库生成表
<5为了后期对后台部署好操作这里需要创建一个超级用户admin这个在之后就不需要重复操作了哟偶,还是在编辑器自带的命令行执行
pyton manage.py createsuperuser
按照提示写好用户名及密码
<6在该应用下的admin.py中注册,后台部署
from django.contrib import admin
from blogs.models import Blogs
class BlogsAdmin(admin.ModelAdmin):# 配置表格所展示那些数据list_display = ['title','abstract','blogtype','get_img','readnum','createtime','isTop','status']#配置表格所展示数据过滤功能一般选择外键?字段布尔类型或者是列表元组类型类似枚举类型list_filter = ['blogtype','isTop','status']search_fields = ['title','content','abstract']#模糊查询list_editable = ['isTop']#配置那些字段属性可以直接在表格中修改
admin.site.register(Blogs,BlogsAdmin)
<7我的项目中还进行了后台的美化可以不美化
<8在总的项目包下新建一个文件夹templates并在setting.py下进行配置
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates',#jinja2'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',],'libraries': {'blogstags': 'blogs.templatestags.blogstags',}},},
]
把本来没有的加上即可,将相关的HTMl文件(在用django模板时就下载了哦)放进来(之后的就不用了一次放完)
<10再新建一个static文件夹将再setting.py下进行配置
STATIC_URL = '/static/'
#格式必须是元组或者列表
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static'),
]
将下载好的css,font,font-awesome,image,js,layui,文件放在该文件下
<11配置页面路径在总的url.py下这里我将后期所有的路径配置都放了方便参考
from django.contrib import admin
from django.urls import path, re_path, include
from django.views.static import serve
from myblog import settings
from django.conf.urls.static import static
urlpatterns = [#http://127.0.0.1.8000/admin#协议,IP,端口PORT不参与匹配,匹配过的内容不再参与匹配,逐一匹配直到匹配到未知这返回404path('admin/', admin.site.urls),
#media配置——配合settings中的MEDIA_ROOT的配置,就可以在浏览器的地址栏访问media文件夹及里面的文件了re_path(r'media/(?P<path>.*)$',serve,{'document_root':settings.MEDIA_ROOT}),path('mdeditor/', include('mdeditor.urls')),# [http://127.0.0.1.8000/]blogs/index/ #博客首页#path中只写要匹配和视图,之后如果逻辑视图是函数直接写如果是类写一个as_view()path('blogs/', include("blogs.urls", namespace='blogs')),#包含评论模块的路径匹配# [http://127.0.0.1.8000/]comments/index/path('comments/',include("comments.urls",namespace='comments')),path('users/', include("users.urls", namespace='users')),]
<12在该应用下的url.py配置
from django.urls import path
from blogs.views import *
app_name = '[blogs]'
urlpatterns = [#博客列表htto://127.0.0.1:8000/blogs/article#试图view.py中就是我们的逻辑代码#类试图要使用as_view()方法映射path('index/', IndexView.as_view(), name='index'),]
<13创建视图在该应用下的view.py文件
请求方式:get post
get:显示请求 所有信息都包括参数信息显示在导航栏 不安全长度有限制
post:隐式请求 用于表单提交不显示相应参数 携带参数安全
页面用到什么请求就写什么请求
from django.core.paginator import Paginator
from django.http import HttpResponseRedirect
from django.shortcuts import render, redirect
from django.views import View
# Create your views here.
import blogs
from blogs.models import *
import markdownfrom comments.models import Comment
#定义博客首页 cbv fbv
#view:django中的试图基类
##博客首页htto://127.0.0.1:8000/blogs/index 这是get 方式
class IndexView(View):#什么样的请求就定义什么样的方法def get(self, request):# 进行数据处理获取热门文章可以为点击量多的#select* from blogs where isTop=Ture#查询数据并获取blogslist = Blogs.objects.filter(isDdelete=False, isTop=True)#select* from blogs_blogsprint(blogslist)#处理组织数据data = {'blogslist': blogslist}#加载index.html页面# 将数据分配到模板进行渲染return render(request, 'index.html',context=data)
<14页面美化,这里要对html文件进型调整找到css,js,img,的相关标签语句利用{%static ‘本来的路径’%}语句改好
到这里一个应用的就基本上完成咯,当然可以根据自己的需求不断美化,其他应用与该应用类似。
基于django的个人博客开发相关推荐
- 基于django的个人博客设计与实现设计与实现-计算机毕业设计源码+LW文档
摘 要 在各学校的教学过程中,个人博客是一项非常重要的事情.随着计算机多媒体技术的发展和网络的普及.采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合 ...
- 基于Django的个人博客系统开发
文章目录 1.创建虚拟环境 2.pycharm创建django项目: 3.创建静态文件,配置settings.py,配置模板 4.django中配置日志器 5.网站的基本信息配置 6.数据库的设计 7 ...
- python毕业设计 基于django框架个人博客系统毕业设计设计与实现
开发环境 开发语言:python:Python版本:3.8.7 开发框架:Django:Django版本:4.x 数据库:mysql:数据库版本:mysql8 数据库管理工具:navicat10+ 开 ...
- python毕业设计作品基于django框架个人博客系统毕设成品(6)开题答辩PPT
整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...
- Django 学习小组:博客开发实战第二周教程 —— 实现博客详情页面和分类页面
本教程内容已过时,更新版教程请访问: django 博客开发入门教程. 上周我们完成了博客的 Model 部分,以及 Blog 的首页视图 IndexView. 本节接上周的文档 Django 学习小 ...
- Django 3.2.5博客开发教程:基础配置
创建项目之后,我们需要对项目进行最基础的配置.这些配置是我们做项目的时候必须要配置的,所以我们先提前配置好. 我们打开myblog目录下的settings.py文件. 一.设置域名访问权限 myblo ...
- Django 3.2.5博客开发教程:HelloWorld欢迎页面
基础配置做好了之后,我们就可以先迁移数据到数据库,然后启动我们的项目,感受Django的魅力. 在Pycharm左下角底部的Terminal,会弹出Terminal终端窗口,Pycharm自动会帮我们 ...
- Django 3.2.5博客开发教程:用Admin管理后台管理数据
上节我们我们把数据库迁移到数据库里去了,那么现在我们数据库里是个什么样的情况呢?我们点击Pycharm右上角的Database,然后在网站项目里选中我们的数据库文件db.sqlite3,把它拖到Dat ...
- Django 3.2.5博客开发教程:URL与视图函数
在讲URL与视图函数之前我们先给大家简单介绍一下用户访问网站的流程.我们访问一个网站的时候,一般先打开浏览器,然后在浏览器的地址栏里输入一个网址,也就是URL,然后回车,我们就可以在浏览器里看到这个网 ...
最新文章
- 使用神经网络提取PDF表格工具来了,支持图片,关键是能白嫖谷歌GPU资源
- python专科就业_利用Python分析复旦大学近五年转专业失败的情况
- R构建分位数回归模型(Quantile Regression)
- c语言结构体输入身高体重,c++:输入n名学生的身高体重,按身高排序输出并计算平均体重和身高...
- Django 的cookie 与 session组件
- 互联网移动支付技术_安全架构图(安全技术/安全协议/加密技术)——转载图片...
- 用临时表的GridView分页
- 安装oracle 10g闪退,Windows 7安装Oracle 10g常见错误及解决方法
- ShipConstructor 2006 v1.00 1CD(加拿大船舶建造软件)
- Rust : Tonic 基于Rust的gRPC实现
- CentOS6.9安装AliSQL
- dw向右滚动字幕HTML,[转载]DW添加滚动字幕[转]
- 雅虎十四条性能优化原则
- cad画多段线时不显示轨迹_cad画多段线时不显示轨迹_CAD画多段线的时候看不到预览效果的解决方法...
- 中级电工技术实训考核装置
- 解决安装youtubedownloader的流氓插件“雅虎助手”造成浏览器首页劫持的事件
- MRI_Made_Easy 磁共振成像原理-物理基础5
- IT业十大热门职位介绍 (转)
- 什么是私有云?私有云有哪些优势和劣势?
- 贫苦云主机用户的安全加固策略