当前位置: 首页 > news >正文

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

执行结果如下:
安装连接pg数据库的依赖包对应配置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,按照下方代码输入,这里直接使用截图显示:
在这里插入图片描述
然后我们再刷新页面看页面显示,截图如下:
在这里插入图片描述
从截图中我们看出,页面已经将刚加入数据库中的数据显示出来了

http://www.lryc.cn/news/26147.html

相关文章:

  • 【Visual Studio】git提交代码时使用GPG
  • 【反序列化漏洞-02】PHP反序列化漏洞实验详解
  • Gateway网关的使用
  • 【LeetCode】背包问题总结
  • Java的开发工具有哪些?这十款工具大厂都在用!
  • web学习-Node.js入门学习
  • 100 eeeee
  • 物盾安全汤晓冬:工业互联网企业如何应对高发的供应链安全风险?
  • 微纳制造技术——基础知识
  • Makefile的使用
  • RealBasicVSR模型转成ONNX以及用c++推理
  • C语言作用域(变量生存的空间)学习
  • Spark性能优化一 概念篇
  • [数据结构]:09-二分查找(顺序表指针实现形式)(C语言实现)
  • 3.基于Label studio的训练数据标注指南:文本分类任务
  • Python进阶-----面向对象3.0(面对对象三大特征之---封装)
  • 软考中级软件设计师备考建议
  • 【机器学习】决策树(理论)
  • VSCode下载与安装使用教程【超详细讲解】
  • 2023年3月北京/上海/广州/深圳DAMA数据管理认证CDGA/CDGP
  • 进程和线程理论知识
  • 华为OD机试用Python实现 -【广播服务器】
  • Solon2 的应用生命周期
  • 学习笔记-架构的演进之服务容错策略设计模式-3月day02
  • 【WEB前端进阶之路】 HTML 全路线学习知识点梳理(上)
  • mes系统核心业务流程及应用场景介绍
  • 应用统计部分常用公式总结
  • 阿赵的MaxScript学习笔记分享八《文件操作》
  • 将项目封装进docker进行迁移或使用
  • matlab - 特殊矩阵、矩阵求值、稀疏矩阵