基于python开发一个Django博客网站项目

2023-10-29

基于Python和Django框架的简单博客平台。该平台提供了一个用户友好的界面,使用户能够轻松地创建和管理博客文章、评论和标签

前期环境:需要准备的环境 python3以上

创建一个虚拟环境(以兼容不同的Django版本)

  1. 创建一个文件夹来专门存放Django(website)
  2. 安装Django
    pip3 install django
  3. 打开cmd到website中创建虚拟环境(djangoenv为虚拟环境项目名)
    cd desktop/website
    python -m venv djangoenv
  4. 继续输入 djangoenv\Scripts\activate就可以将该虚拟环境激活了
    这是每一次使用虚拟环境都要进行的操作

 

 以上虚拟环境就创建好了

创建一个Django项目

`django-admin startproject one(项目名)

 初始化生成文件的用途
Manage.py 一个在命令行中可以调用的网站管理工具
one文件夹里
init.py 告诉Python这个文件夹是一个模块
settings.py one项目中一些配置
urls.py 网站内各个网址声明
usgi.py web服务器与django项目的接口

新建一个一个Django App 

`cd one`
python manage.py startapp blog(app项目名)

 再将App添加到settings.py里INSTALLED_APPS默认包括了一下Django自带的应用:

  • django.contrib.admin--管理员站点
  • django.contrib.auth--认证授权系统
  • django.contrib.contenttypes--内容类型框架
  • django.contrib.sessions--会话框架
  • django.contrib.messages--消息框架
  • django.contrib.staticfiles--管理静态文件的框架

默认开启的某些应用至少需要一个数据表,所以在使用他们之前要创建一些表

python manage.py migrate

这个命令是用来检查INSTALLED_APPS设置,为其中的每个应用创建需要的数据表(作用到数据库文件)

Django的大致运行流程

对于不同路径的响应(一般是在urls.py--blog中修改)

在blog文件夹下创建一个新的文件:urls.py用于处理网址的解析,同时在one文件夹下的urls.py中添加一条路径
urls.py--one path('',include('blog.urls')),

  • urls.py--one中要添加from django.urls import path,include
  • urls.py--blog中添加from django.urls import path

函数include()允许引用其他的URLconfs.,他会截断与此项相匹配的URL部分,并将剩余的字符串发送到URLconf以供进一步处理.包括其他URL模式时总应该使用include(),admin.site.urls是唯一的例外.

函数path()具有四个参数,两个必须参数:routeview,

两个可选参数: kwargsname一般只填写两个必选参数:

route是一个匹配URL的准则.当Django响应一个请求时,他会从urlpatterns的第一项开始,按顺序以此匹配列表中的项,直到找到匹配的项,这些准则不会匹配GET和POST参数或域名.

例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/

path() 参数: view
当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。
route参数可以有一些特定的格式来处理路径

  • <slug:blog_link>--slug可以识别字符和数字
  • <int:blog_id>--int用于识别数字,表示这个网址是个数字存到blog_id这个变量里
  • <str:blog_title>--str用于识别字符串

如上图所示有一个默认的路径http://127.0.0.1:8000/admin/

编写模型

模型是您的数据唯一而且准确的信息来源.它包含您正在存储的数据的重要字段和行为.一般来说,每一个模型都映射一个数据库表

  • 每个模型都是一个python类,这些类继承django.db.models.Model
  • 模型类的每个属性都相当于一个数据库字段
  • 综上,Django正在给你一个自动生成访问数据库的API

Django中可用的各类模型

三个关联模型是为了防止出现重复过多的问题(方便添加数据)

关联作者模型

 

 利用ForeignKey()即可关联另外一个模型

在models.py文件中建立一个Post模型,还有与之相关联的Category,Tag模型

  • ForeignKey()--一般用于一对多的模型
  • ManyToManyField()--一般用于多对多的模型
  • 关联作者模型有现成的直接引入
    from django.contrib.auth.models import User

 然后,想要在后台直接操作这三个数据,需要现在admin.py中注册一下

 

  • from .models import Post,Category,Tag--将Post,Category,Tag从models.py中导入

  • admin.site.register --进行注册

最后每当我们在models做了修改之后都需要执行两个操作 

python manage.py makemigrations
python manage.py migrate

第一个命令用于检测你对模型文件的修改,并且把修改的部分作为一次迁移(这是一种对于变化的存储形式)
第二个命令,在数据库中创建新定义的模型的数据表

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于python开发一个Django博客网站项目 的相关文章

随机推荐

  • uni-app多选select组件,兼容多平台小程序、H5

    目录 介绍 平台差异说明 使用方式 安装 引入 基本使用 默认选中项 回显 配置label value对应的key名称 获取点击确认后的结果 完整示例 API Props Option Attributes Slot Events 介绍 多
  • React Router 5.1.0使用useHistory做页面跳转导航

    从React Router v5 1 0开始 新增了useHistory钩子 hook 如果是使用React gt 16 8 0 编写以下函数组件 使用useHistory即可实现编程时页面跳转导航 示例 import useHistory
  • RMQ——支持合并和优先级的消息队列

    业务背景 在某个项目中需要实现一个功能 商品价格发生变化时将商品价格打印在商品主图上面 那么需要在价格发生变动的时候触发合成一张带价格的图片 每一次触发合图时计算价格都是获取当前最新的价格 上游价格变化的因素很多 变化很频繁 下游合图消耗G
  • E-R图转换成关系模式 两个例题 以及ea 画 E-R图过程

    1 画er图 新建项目 注 网上查不到具体建立过程方法 目测是对的 矩形 实体 椭圆 属性 菱形 方法 属性为主码设置 2 两道例题 1 现有论文和作者两个实体 论文实体的属性包括题目 期刊名称 年份 期刊号 作者实体的属性包括姓名 单位
  • 启动SpringBoot后target没有yaml配置文件导致的Bug

    Bug复现 nested exception is org springframework boot autoconfigure jdbc DataSourceProperties DataSourceBeanCreationExcepti
  • JAVA--Collections类

    Collections类概述 Collection接口的实现类 如ArrayList LinkedList本身并没有提供排序 倒置 查找等方法这些方法是由Collections类来实现的 该类有很多public static方法 可以直接对
  • mysql 查询同一个字段同时符合多个不同条件的数据

    使用GROUP BY 去重 使用 HAVING sum gt 2 判断查询出来的数据超过同一字段的查询条件数量 取到同时符合条件的数据 SELECT c FROM goods a INNER JOIN goods category rela
  • 蚂蚁森林快捷指令_iPhone 这样偷蚂蚁森林能量,简直就是开挂

    我发现身边有很大一群人 早上要定两个闹钟 一个是偷能量的 另一个是起床的 而常规的偷能量操作无非是 关闹钟 手动打开支付宝 手动进入蚂蚁森林 但这还是略麻烦 很多人在想 速度能不能再快点 不然我的能量要被偷光了 话说我种完一棵树就弃坑了答案
  • 为什么单线程的Redis能这么快?

    1 为什么是单线程 总结 Redis 的普通 KV 存储瓶颈不在 CPU 而往往可能受到内存和网络 I O 的制约 Redis 中有多种类型的数据操作 甚至包括一些事务处理 如果采用多线程 则会被多线程产生的切换问题而困扰 也可能因为加锁导
  • 算法题---合并两个有序数组(乐乐独记)

    1 题意描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你合并 nums2 到 nums1 中 使合并后的数组同样按 非递减顺序 排列
  • 用AD组策略------控制客户端本地组

    从安全的角度来说是不建议大家把域用户加入到本地Power Users 写这篇文章的目的是告诉大家 可以通过组策略把域用户和域组自动加入到客户端的本地组 实现对客户端本地组的控制 如果善用此策略可以增加系统的安全性 本地Administrat
  • wkwebview 文件服务器,WKWebView 的缓存策略

    缓存策略有以下四种方式 默认的NSURLRequest 缓存策略 后台需要做响应头设置 否则无法进行缓存 存在cache目录 n磁盘紧张会被清除 NSURLCache 和上面类似 可以不需要后台设置也能存储 存在cache目录 n磁盘紧张会
  • Ubuntu建立nfs和tftp环境

    nfs apt安装 sudo apt get install nfs kernel server 编辑配置文件 sudo vi etc exports 在文件末尾加入红框所示内容 其中蓝框内写入nfs工作目录 要传输的文件放在这个目录下 开
  • MATLAB入门教程

    1 MATLAB的基本知识 1 1 基本运算与函数 在MATLAB下进行基本数学运算 只需将运算式直接打入提示号 gt gt 之後 并按入Enter键即可 例如 gt gt 5 2 1 3 0 8 10 25 ans 4 2000 MATL
  • 算法学习——递归

    引言 从这个专栏开始 我们将会一起来学习算法知识 首先我们要一起来学习的算法便是递归 为什么呢 因为这个算法是我很难理解的算法 我希望通过写这些算法博客 来加深自己对于递归算法的理解和运用 当然 学习算法最快的方式便是通过刷题 但是今天这篇
  • jwt 的 token 被获取怎么办

    jwt 签发后 每次请求会续期 如果 token 被抓包后 别人得到后 有没有好的方案解决身份窃取问抗投诉服务器题 签发 token 的时候加入一些验证信息 比如 IP 如果当前 request IP 和签发时候的 IP 不一致就加 bla
  • 1.Python 基本概念

    一 Python 源程序的基本概念 Python源程序就是一个特殊格式的文本文件 可以使用任意文本编辑软件做Python的开发 Python程序的文件扩展名 通常是 py 文件 二 Python 2 x 与 Python 3 x 版本介绍
  • 多线程算法(完整版)

    多线程算法 完整版 算法导论第3版新增第27章 ThomasH Cormen Charles E Leiserson Ronald L Rivest Clifford Stein 邓辉 译 原文 http software intel co
  • 排序(Sort)

    排序 1 排序的基本知识 2 插入类排序 2 1 直接插入排序 2 2 折半插入排序 2 3 希尔排序 3 交换类排序 3 1 冒泡排序 3 2 快速排序 4 选择类排序 4 1 简单选择排序 4 2 堆排序 5 归并排序 6 基数排序 7
  • 基于python开发一个Django博客网站项目

    基于Python和Django框架的简单博客平台 该平台提供了一个用户友好的界面 使用户能够轻松地创建和管理博客文章 评论和标签 前期环境 需要准备的环境 python3以上 创建一个虚拟环境 以兼容不同的Django版本 创建一个文件夹来