Python之Web开发中级教程----创建Django子应用

Python之Web开发中级教程----创建Django子应用

  1. 基于上一个教程的Django项目(可以先看上一集,链接如下:)

https://mp.csdn.net/mp_blog/creation/editor/136724897

2.创建子应用

python manager.py startapp book

admin.py:跟网站的后台管理站点配置相关。

apps.py:用于配置当前应用的相关信息。

Migrations目录:用于存放数据库迁移历史文件。

models.py:用户保存数据库模型类。

tests.py:用于开发测试用例,编写单元测试。

views.py:用于编写Web应用视图。

3.在项目中注册应用

虽然创建了应用,但还没跟项目工程建立联系。

(1)在项目工程的settings.py中,INSTALLED_APPS项添加应用的配置信息文件apps.py中的Config类

4、建立MVT模型

Tip:

MVT设计模式中的Model, 专门负责和数据库交互.对应(models.py)

由于Model中内嵌了ORM框架, 所以不需要直接面向数据库编程.

而是定义模型类, 通过模型类和对象完成数据库表的增删改查.

ORM框架就是把数据库表的行与相应的对象建立关联, 互相转换.使得数据库的操作面向对象.

不需要定义主键字段, 在生成表时会自动添加, 并且值为自增长.

默认采用sqlite3数据库来存储数据

1)Model

(1)定义模型类

BookManager的数据关系:书籍和书中的人物

BookInfo书籍信息表

字段名

字段类型

字段说明

id

AutoField

主键

name

CharField

书名

id

name

1

西游记

2

三国演义

PeopleInfo人物信息表

字段名

字段类型

字段说明

id

AutoField

主键

name

CharField

人名

gender

BooleanField

性别

book

ForeignKey

外键

id

name

gender

book

1

孙悟空

False

1

2

白骨精

True

1

3

曹操

False

2

4

貂蝉

True

2

(2)编写Models.py的代码

from django.db import models

# Create your models here.

# 准备书籍列表信息的模型类

class BookInfo(models.Model):

    # 创建字段,字段类型...

    name = models.CharField(max_length=10)

# 准备人物列表信息的模型类

class PeopleInfo(models.Model):

    name = models.CharField(max_length=10)

    gender = models.BooleanField()

    # 外键约束:人物属于哪本书

    book = models.ForeignKey(BookInfo,on_delete=models.CASCADE)

(3)Model迁移建表

生成迁移文件:根据模型类生成创建表的语句

python manage.py makemigrations

执行迁移:根据上一个命令生成的语句在数据库中创建表

python manage.py migrate

2)View

(1)定义视图

视图就是一个Python函数,被定义在应用的views.py中.

视图的第一个参数是HttpRequest类型的对象reqeust,包含了所有请求信息.

视图必须返回HttpResponse对象,包含返回给请求者的响应信息.

需要导入HttpResponse模块 :from django.http import HttpResponse

定义视图函数 : 响应字符串OK!给客户端

(2)编写views.py的代码

From Django.shortcuts import render

#导入HttpResponse模块

From Django.http import HttpResponse

#Create your views here

#定义视图函数

Def index(request):

    Return HttpResponse(‘OK!’)

(3)配置URLconf

在项目中定义URLconf 添加

from django.urls import path,include

path(‘’,include(‘book.urls’)),

在应用中定义URLconf 添加 path(‘’,include(‘book.urls’)),

新建urls.py文件,写入如下的代码:

from django.urls import path

from book.views import index

Urlpatterns = [

    Path(‘index/’,index),

]

3)Template

需要漂亮的界面,就采用Template,本项目输出简单,省略Template,可以参见后续教程。

测试:请求访问:http://127.0.0.1:8000/index/

对应的源代码可以在下面的链接下载:

https://download.csdn.net/download/zhengyuanyehit/88971158

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

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

相关文章

25考研数据结构复习·3.2队列

队列(Queue)基本概念 定义 队列(Queue)时只允许在一端进行插入,在另一端删除的线性表。 特点:先进入队列的元素先出队 先进先出 First In First Out(FIFO) 重要术语 队头、队尾、空队列 基本操作 创、销 I…

AIX上安装gcc和g++

AIX的iso镜像中没有gcc的软件包,需要我们自己下载,我们可以在 Index of /download/rpmdb/deplists/aix72 下载对应gcc和g版本的依赖文件deps 我们使用的是4.9.4版本的软件包 我们首先安装gcc,在http://www.oss4aix.org/download/everythi…

天锐绿盾|公司办公透明加密系统,文件数据 \ 资料防泄密软件

#防止核心文件、文档、图纸、源代码、音视频等数据资料泄漏,外泄# 天锐绿盾作为一款专业的公司办公透明加密系统,专注于解决企业文件数据与资料的安全保密问题,通过先进的加密技术和全面的安全管理体系,确保企业核心信息资产在日…

【C++设计模式】策略模式

文章目录 前言一、策略模式是什么?二、策略模式的实现原理三、UML图四、代码实现总结 前言 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。通过将每个算法封装到具有共同接口的独立类中,客户端可以在不改变自身代码的情况下选择…

修改 MySQL update_time 默认值的坑

由于按规范需要对 update_time 字段需要对它做默认值的设置 现在有一个原始的表是这样的 CREATE TABLE test_up (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键id,update_time datetime default null COMMENT 操作时间,PRIMARY KEY (id) ) ENGINEInnoDB DEF…

Leet code 1658 将x减到0的最小操作数

解题思路:滑动窗口 主要思想:正难逆简 题目需要左找一个数 右找一个数 我们不如直接找中间最长的一连串子数让这串子树和为 数组子树和减去X 找不到就返回 -1 滑动窗口双指针从左端出发,进行 进窗口 判断 出窗口 更新结果四个步骤 代码…

使用API有效率地管理Dynadot域名,使用API设置域名隐私保护

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

ChatGPT 实操指南(断人财路版)

前言 ChatGPT 的横空出世,让很多人焦虑不已,不过,你完全不需要为此焦虑,因为比 AI 更强大永远是驾驭 AI 为自己所用的人类。 而且 GPT 远没有各大商家炒作的那么玄乎 ,它应用逻辑也非常简单,你完全没必要…

前端提高性能——使用Intersection Observer API对图片视频进行懒加载

前言 最近做了一个项目是类似于商城的&#xff0c;需要放很多图片&#xff0c;在用户选择一页五十条时&#xff0c;页面加载速度会比较慢。为了提高性能&#xff0c;选择用Intersection Observer API 实现图片懒加载。 实现步骤 一、html代码&#xff1a; <img class&qu…

import postcssPxToViewport8Plugin from ‘postcss-px-to-viewport-8-plugin‘;

npm 命令行&#xff1a; npm i postcssPxToViewport8Plugin package.json插件的版本&#xff1a; 重点&#xff1a;引入插件的两种方式 postcss-px2rem-exclude配置 postcss.config.js无效 为什么引入插件不生效&#xff1f; 发现没有效果&#xff0c;然后然后百度网上资料发现…

立体声骨传导蓝牙耳机哪个好?骨传导蓝牙耳机选购避坑的几大要点

最近骨传导蓝牙耳机以其创新的设计成为众多消费者的热门话题。这类耳机可以让用户在听音乐的同时清晰地听到周围环境的声音&#xff0c;这样的设计使得骨传导蓝牙耳机在过去两年中迅速赢得了用户的青睐。随着市场的不断扩大&#xff0c;各式各样的骨传导蓝牙耳机纷纷涌现&#…

监听抖音直播间的评论并实现存储

监听抖音直播间评论&#xff0c;主要是动态监听dom元素的变化&#xff0c;如果评论是图片类型的&#xff0c;获取alt的值 主要采用的是MutationObserver&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver index.js如下所示:function getPL() {…