PythonWeb Django PostgreSQL创建Web项目(三)
了解Django框架下如何配置数据库链接与创建模型和应用
使用Django创建web项目,首先需要了解生成的项目文件结构,以及对应文件功能用途方可开始web项目页面创建,下方先介绍文件功能,之后再配置数据库连接以及管理创建模型与应用,最后创建超级管理员启动django自带的管理站点界面。
1. 项目文件目录与功能介绍
从(一)中找到初始化生成的项目文件如下:
test004 //主文件夹
--- test004 --- __init__.py //一个空文件,标识该目录为一个Python包--- settings.py //项目的配置文件--- urls.py //路由文件 项目的URL声明--- asgi.py //作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口--- wsgi.py //作为你的项目的运行在 WSGI 兼容的Web服务器上的入口
--- manage.py // 进行交互的命令行工具
2.将已创建本网站记入配置
我们的应用名称为test004,具体添加如下:

3.配置文件(数据库)
打开test004/setting.py,这里配置关乎Django项目设置的Python模块,默认该配置文件使用SQLite作为默认数据库,,当然我们在(二)安装了PostgreSQL作为本测试项目的数据库,需要在setting.py中对数据库进行配置,但是连接数据库只有这些配置是没有用的,还需要对应连接的python模块psycopg2依赖包,安装命令如下:
pip install psycopg2
执行结果如下:
对应配置setting.py初始DATABASES 如下:
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}
对setting.py修改部分内容如下:
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2','NAME':'test004','USER':'postgres','PASSWORD':'123456','HOST':'localhost','PORT':'5432',}
}
下面我们尝试一下是否可以连接到数据库,我们执行一下命令:
python manage.py migrate
如果结果如下:

你会神奇的发现数据库test004中多了很多的表,这些表是之前自带框架中主要是认证授权系统中使用到的表,截图如下:

当你学会创建模型时可以执行该命令,自动替你创建数据库中对应的表,同时也表示数据库配置已经完成。
4. 创建应用与模型
使用Django框架,在创建模型时,要求创建一个app应用,我们使用一下命令创建一个DoctorInfo的app:
django-admin startapp DoctorInfo
执行后生成的目录结构如下:
test004
|-- test004
|-- manage.py
...
|-- DoctorInfo
| |-- migrations
| |-- __init__.py
| |-- admin.py
| |-- apps.py
| |-- models.py
| |-- tests.py
| |-- views.py
我们修改DoctorInfo/models.py代码如下:
from django.db import models
import uuid
# Create your models here.class Doctor(models.Model):did = models.UUIDField(primary_key=True,default=uuid.uuid4,editable=False)realname = models.CharField(max_length=20)professional = models.CharField(max_length=20)
class DocGoodAtInfo(models.Model):doctor = models.ForeignKey(Doctor,on_delete=models.CASCADE) #外键goodat = models.CharField(max_length=200)update = models.DateTimeField('date published') #日期字段
将该应用添加到主站点中,操作如下:
INSTALLED_APPS = ['DoctorInfo.apps.DoctorinfoConfig', #自行创建应用'django.contrib.admin', #管理员站点'django.contrib.auth', #认证授权系统'django.contrib.contenttypes', #内容类型框架'django.contrib.sessions', #会话框架'django.contrib.messages', #消息框架'django.contrib.staticfiles', #管理静态文件的框架'test004',
]
执行以下命令,可以在对应数据库中创建表:
python manage.py makemigrations DoctorInfo
执行结果如下:

当我们执行命令遇到错误 ValueError: source code string cannot contain null bytes,这属于编码问题,找到改动的文件,修改对应编码为UTF-8

5.创建超级管理员密码打开管理站点界面
记住执行命令前先进入对应目录,这里不再详细说明,我们先创建一个管理员账户密码,执行命令如下:
python manage.py createsuperuser

管理员账户密码创建完成,让我们启动服务器打开管理站点python manage.py runserver,启动完成后,在浏览器中访问http://127.0.0.1:8000/admin,可以看到管理站点登陆页面入口,输入我们刚刚创建的管理员账号密码

进入之后我们可以看到,截图如下:

而且通过点击Users的Change,我们可以编辑刚刚创建的即当前登录的账号,截图如下:

6.将新创建应用的模型类加入管理站点中
我们需要编辑应用中的DoctorInfo/admin.py
from django.contrib import adminfrom .models import Doctor
from .models import DocGoodAtInfo
# Register your models here.admin.site.register(Doctor)
admin.site.register(DocGoodAtInfo)
我们刷新管理站点界面后就会发现多了两项管理内容:

我们从这里可以直接编辑数据库数据
7. 开始创建可用的视图页面第一步创建应用自己的urls.py
Django默认不会给应用自动创建urls.py,因此为了以便概述划分为应用程序的项目的整个 url 结构,最好创建自己的DoctorInfo/urls.py,然后在主站点test004下的urls.py中引入,创建如下:
from django.urls import path
from . import views
urlpatterns = [path('', views.index, name='index'),
]
下一步在根URLconf文件中指定我们创建的DoctorInfo.urls模块。在test004/urls.py文件的urlpatterns插入相关部分,如下
from django.contrib import admin
from django.urls import include,pathurlpatterns = [path('DoctorInfo/',include('DoctorInfo.urls')),path('admin/', admin.site.urls),
]
8.创建模板目录以及html文件和对应的view修改
首先我们能在DoctorInfo目录下创建一个templates目录,Django将在这个目录中查找模板文件,编写对应的DoctorInfo/views.py
from django.shortcuts import renderfrom .models import Doctor# Create your views here.def index(request):last_doctot_list = Doctor.objects.order_by('-crtime')[:5]context = {'last_doctot_list':last_doctot_list}return render(request,'DoctorInfo/index.html',context)
创建DoctorInfo/templates/index.html,完整代码如下:
<!DOCTYPE html>
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><meta name="description" content="测试版应用首页"><title>小应用首页</title><style></style>
</head>
<body><div class="top"></div><div class="main">{% if last_doctot_list %}<ul>{% for doctor in last_doctot_list %}<li><a href="/DoctorInfo/{{ doctor.did }}">{{ doctor.realname }} - {{ doctor.professional }}</a></li>{% endfor %}</ul>{% else %}<p>No doctor are available</p>{% endif %}</div>
</body>
</html>
创建完成后,我们就开始测试吧启动server,显示如下:

因为我们并没有添加对应数据,表示一张空表
9. 下面我们使用pythonshell来创建一条数据
首先进入主站点根目录下,输入命令python manage.py shell,按照下方代码输入,这里直接使用截图显示:

然后我们再刷新页面看页面显示,截图如下:

从截图中我们看出,页面已经将刚加入数据库中的数据显示出来了
相关文章:
PythonWeb Django PostgreSQL创建Web项目(三)
了解Django框架下如何配置数据库链接与创建模型和应用 使用Django创建web项目,首先需要了解生成的项目文件结构,以及对应文件功能用途方可开始web项目页面创建,下方先介绍文件功能,之后再配置数据库连接以及管理创建模型与应用&a…...
【Visual Studio】git提交代码时使用GPG
前言 下载安装GPG的过程省略,直接开始进行配置 0.visual studio 版本说明 其余版本未测试,但是应该也是可以的 1 获取GPG的密钥ID 1.1 window下可以打开Kleopatra查看生成好的密钥的密钥ID 1.2 也可以从命令行中获取 gpg --list-keys 红框位置,后16位就是密钥ID 2 配置.git…...
【反序列化漏洞-02】PHP反序列化漏洞实验详解
为什么要序列化百度百科上关于序列化的定义是,将对象的状态信息转换为可以存储或传输的形式(字符串)的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区(非关系型键值对形式的数据库Redis,与数组类似)。以后,可以通过…...
Gateway网关的使用
Gateway服务网关Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。1…...
【LeetCode】背包问题总结
文章目录一、背包能否装满?416. 分割等和子集1049. 最后一块石头的重量 II二、装满背包有几种方法?494. 目标和518.零钱兑换II377. 组合总和 Ⅳ70. 爬楼梯三、背包装满的最大价值474.一和零四、装满背包最小物品数322. 零钱兑换279.完全平方数一、背包能…...
Java的开发工具有哪些?这十款工具大厂都在用!
工欲善其事必先利其器,各位同学大家好,我是小源~本期文章,给大家推荐十款Java的开发工具。一、 文本编辑器主要推荐三款:notepad、editplus、sublime text。这三款编辑工具,在我们的开发工作中几乎是相差无几ÿ…...
web学习-Node.js入门学习
web学习-Node.js入门学习1.回顾与思考2. 初识Node.js2.1 Node.js的简介2.2Node.js的环境安装2.3. fs文件系统模块2.3.1 fs.readFile()2.3.2 fs.writeFile()2.3.3 练习-整理考试成绩2.3.4 fs模块-路径动态拼接的问题2.4 path路径模块2.5 http模块2.5.1 服务器相关的概念2.5.2 创…...
100 eeeee
全部 答对 答错 敏捷综合训练3 1.看板中的精益生产概念是如何减少工作在瓶颈时期的影响? A它不会减少瓶颈,因为瓶颈是任何生产系统不可避免的副产品 B通过运用 5Y 分析根本原因 C通过成为一个及时的进度系统 D通过每周完善活动 答错了 收藏 学员得…...
物盾安全汤晓冬:工业互联网企业如何应对高发的供应链安全风险?
编者按:物盾安全是一家专注于物联网安全的产品厂商,其核心产品“物安盾”在能源、制造、交通等多个领域落地,为这些行业企业提供覆盖物联网云、管、边、端的安全整体解决方案。“物安盾”集成了腾讯安全制品扫描(BSCA)…...
微纳制造技术——基础知识
1.什么是直接带隙半导体和间接带隙半导体 导带底和价带顶处以同一K值,称为直接带隙半导体 导带底和价带顶不处在同一K值,称为间接带隙半导体 2.扩散和漂移的公式 3.三五族半导体的性质 1.high mobility 2.wide bandgap 3.direct bandgap 4.三五族…...
Makefile的使用
Makefile的使用 自动化编译脚本,这个东西就是,进行简单的设置,然后实现原码编成为相应程序,简单化自己进行相关操作的过程。不需要一个个自己进行全部进行输入。而且还有许多的简化书写方法。 这个Makefile的本质为一种脚本语言…...
RealBasicVSR模型转成ONNX以及用c++推理
文章目录安装RealBasicVSR的环境1. 新建一个conda环境2. 安装pytorch(官网上选择合适的版本)版本太低会有问题3. 安装 mim 和 mmcv-full4. 安装 mmedit下载RealBasicVSR源码下载模型文件写一个模型转换的脚步测试生成的模型安装RealBasicVSR的环境 1. 新建一个conda环境 cond…...
C语言作用域(变量生存的空间)学习
C 作用域规则 任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。C 语言中有三个地方可以声明变量: 在函数或块内部的局部变量 在所有函数外部的全局变量 在形式参数的函数参数定义中 让我们来看看什么是局…...
Spark性能优化一 概念篇
(一)宽依赖和窄依赖 窄依赖(Narrow Dependency):指父RDD的每个分区只被子RDD的一个分区所使用,例如map、filter等 这些算子一个RDD,对它的父RDD只有简单的一对一的关系,也就是说,RDD的每个part…...
[数据结构]:09-二分查找(顺序表指针实现形式)(C语言实现)
目录 前言 已完成内容 二分查找实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-PSeqListFunction.cpp 04-SearchFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容,除其中使用到C引用外,全为C语言代码。使用C引用主要…...
3.基于Label studio的训练数据标注指南:文本分类任务
文本分类任务Label Studio使用指南 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等 2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等…...
Python进阶-----面向对象3.0(面对对象三大特征之---封装)
目录 前言: 什么是封装 Python私有化封装 习题 前言: 上一期是讲解Python中类的私有属性和方法,其实很好理解,我给一个类中的部分属性进行加密拒绝访问(上一期链接Python进阶-----面向对象2.0&#…...
软考中级软件设计师备考建议
前言 首先我说一下个人对这个考试的一个感受看法,我觉得软件设计师考试并不难,主要是不要被内心的恐惧吓倒,考试中心态真的很重要! 一、中级软件设计师科目包括: (1)计算机与软件工程知识&am…...
【机器学习】决策树(理论)
决策树(理论) 目录一、何为决策树1、决策树的组成2、决策树的构建二、熵1、熵的作用2、熵的定义3、熵的计算4、条件熵的引入5、条件熵的计算三、划分选择1、信息增益( ID3 算法选用的评估标准)2、信息增益率( C4.5 算法…...
VSCode下载与安装使用教程【超详细讲解】
目录 一、VSCode介绍 二、官方下载地址 三、VSCode安装 1、点击我同意此协议,点击下一步; 2、点击浏览,选择安装路径,点击下一步; 3、添加到开始菜单,点击下一步; 4、根据需要勾选&#…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
