Django入门学习-了解基本模块

news2024/11/11 14:59:55

目录

MVT设计了解

认识MVT

实际操作

Template:

View:

路由配置

Model:

默认的后台管理模块

初始化admin模块

应用中Admin注册


MVT设计了解

认识MVT

Django的web设计模型是MVT:

  • Model:数据存储层,处理所有数据相关的业务,和数据库进行交互,并提供数据的增删改查;
  • Template:模板层(也叫表现层)具体来处理页面的显示;
  • View:业务逻辑层,处理具体的业务逻辑,它的作用是连通Model 层和 Template 

相关的模型可以参考Django MTV和MVC的区别 

实际操作

Template:

在Template中创建test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{vaule}}
</body>
</html>

View:

在刚才创建的blog应用目录下的views.py中添加以下代码,使用render将对用值渲染到html页面中

from django.shortcuts import render      
def hello_my_django(request):
    return render(request,"test.html",{"vaule":"hello my Django"})

路由配置

在djangoProject的urls.py中可以配置路由

4.0之前引入url模块的方式:

from django.conf.urls import url

  url(regex,view,name=None)

4.0之后可以直接

from django.urls import path
path('test',views.hello_my_django),

 4.0后如果还想用url正则匹配可以使用以下方式引入

   from django.urls import re_path as url

或者放到首页path('',views.hello_my_django),

上述 url 的参数解析如下:

  • regex,匹配请求路径,用正则表达式表示;
  • view,指定 regex 匹配路径所对应的视图函数的名称;
  • name,是给 url 地址起个别名,在模板反向解析的时候使用

配置好后测试test路由

Model:

所有的 Model 都必须继承自django.db.models.Model,在blog的models中添加以下内容,class名在ORM框架中对应数据库表中的表名,变量名对应数据库中表的字段,如title等

class Book(models.Model):  #创建 book 表
    title=models.CharField( max_length=30,unique=True, verbose_name='书名')
    public=models.CharField(max_length=50,verbose_name='出版社')
    price=models.DecimalField(max_digits=7,decimal_places=2,verbose_name='定价')
    def default_price(self):
         return '¥30'
    retail_price=models.DecimalField(max_digits=7,decimal_places=2,verbose_name='零售价',default=default_price)

    def __str__(self):
        return "title:%s pub:%s price:%s" % (self.title, self.public, self.price)

class Author(models.Model): #创建作者表
    name=models.CharField(max_length=30,verbose_name='姓名')
    email=models.EmailField(verbose_name='邮箱')

    def __str__(self):
        return '作者:%s'%(self.name)

class UserInfo(models.Model): #创建用户信息表
    username=models.CharField(max_length=24,verbose_name='用户注册')
    password =models.CharField(max_length=24,verbose_name='密码')

然后在终端执行

python manage.py makemigrations
python manage.py migrate

可以看到已经创建了对应的三张表

 在执行完python manage.py makemigrations后,在应用目录下会有一个migrations目录,记录数据库信息以便以后迁移,可以通过python manage.py sqlmigrate + 应用名 + 编号查看转换对应的sql语句

python manage.py sqlmigrate blog 0001_initial 

默认的后台管理模块

上节创建完djangoProject项目后

打开改项目文件夹下的urls.py,发现已经注册了并引入了admin模块

因为没有初始化,所以无法登录

初始化admin模块

python manage.py createsuperuser

遇到报错:

django.db.utils.OperationalError: no such table: auth_user

可以使用 python manage.py migrate 先创建数据库

可以看到数据库中多了这几张表 

然后创建管理员账户

python manage.py createsuperuser

这里账户密码为admin/123456

对应表中也会多出相应的记录 

 完事可以登录了

应用中Admin注册

在应用中修改

from django.contrib import admin

# Register your models here.
from blog.models import Book, Author,UserInfo #这个需要我们自己导入相应的模型类(数据表)
admin.site.register([Book,Author,UserInfo])

启动应用后,可以看到刚才的Book, Author,UserInfo模块已经注册到了管理后台,可以可视化添加数据库记录了

 

 

参考:

Django模板系统 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea+ApifoxUploader+Apifox真是内外双修,香

前言 最近部门为整合后端组、前端组、测试组、需求组、产品组等组之间的工作流程&#xff0c;旨在提高协调与高效&#xff0c;其中之一就是希望开发组&#xff08;后端、前端&#xff09;开发的接口能及时更新&#xff0c;测试组能做接口测试&#xff0c;后期方便出文档&#x…

大公司为什么禁止SpringBoot项目使用Tomcat?

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…

【2】burpsuite屏蔽浏览器无用流量包方法

0x01 问题描述经常会使用火狐或者谷歌去burpsuite对站点进行测试&#xff0c;但是在测试的过程中burpsuite经常抓到火狐浏览器自身的数据包或者其他无用的数据包&#xff0c;这就对我们工作的效率大有影响&#xff0c;所以这里来告诉大家如何解决此类问题。0x02 问题复现访问网…

星环科技数据治理与数据价值评估实践分享

数据价值评估背景 自2015年8月国务院《促进大数据发展行动纲要》提出“数据已成为国家基础性战略资源”以来&#xff0c;我国出台了诸多政策和法案&#xff0c;推进数据的发展和数据要素的资产化。 2019年10月&#xff0c;第十九届四中全会关于《推进国家治理体系和治理能力现…

Node.js安装详细教程

安装 Node.js 官网下载安装包https://nodejs.org/zh-cn/&#xff0c;一直【下一步】安装即可。 设置Windows操作系统全局环境变量 为什么设置环境变量&#xff1f; 当我们在cmd命令行中输入命令时&#xff0c;系统首先会在当前目录下去找命令对应的可执行程序&#xff0c;如果…

后端校验(hibernate-validator)

目录一、介绍和依赖二、方法的 Model 参数校验三、方法的非 Model 参数校验四、常用注解五、快速失败六、自定义校验规则一、介绍和依赖 hibernate-validator 是 Java 中常用的后端校验框架 https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/【…

提取各种数据结构中的元素将提取结果合并为迭代对象 itertools.chain(*a,b)

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 提取各种数据结构中的元素 将提取结果合并为迭代对象 itertools.chain(*a,b) [太阳]选择题 以下python代码最后输出正确的一项是? from itertools import chain a[(1, A), (2, B), …

Java高效率复习-线程基础[线程]

内容大纲 线程相关概念 并发并行 当只有一个CPU时&#xff0c;会执行并发的效果&#xff0c;在多个应用程序之间快速切换&#xff0c;而有多个CPU时&#xff0c;则多个CPU独立执行&#xff0c;而当进程多于CPU个数时&#xff0c;则会出现并发并行的情况&#xff0c;总有一个CPU…

如何炼就数据分析的思维?

目录 前言结构化思维假说演绎思维指标化思维维度分析思维 前言 面对数据异常&#xff0c;我们经常会出现“好像是A原因引起的&#xff1f;”“貌似和B原因也相关&#xff1f;““有可能是 C操作不当“的主观臆测。 或者&#xff0c;拿到一个分析议题&#xff0c;分析”11 月销售…

@ConfigurationProperties注解使用方法(内含源代码)

ConfigurationProperties注解使用方法&#xff08;内含源代码&#xff09; 源代码下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87400774 目录ConfigurationProperties注解使用方法&#xff08;内含源代码&#xff09;源代码下载链接地址&…

怎么识别截图中的文字?这三个方法让你轻松学会

在日常工作或学习中&#xff0c;我们会经常在网上查阅一些资料&#xff0c;当遇到一些优美的句子或者段落时&#xff0c;都会手动摘抄下来&#xff0c;这种记录方式不仅很耗时&#xff0c;还耗费精力&#xff0c;并且现在很多网站都已经不支持文本复制了&#xff0c;遇到这种情…

6.验证面试高频问题整理(附答案)

目录 Q126.top-down phase、bottom-up phase有哪些 Q127.为什么build_phase是top-down phase&#xff0c;connect_phase是bottom-up phase Q128.$size用于packed array和unpacked array分别得到的什么 Q129.class和struct的异同 Q130.class和module的异同 Q131.对象创建的…

MAC系统 LightGBM模型转为pmml格式

一、配置JAVA环境和Maven环境 参考以下两个博客即可 MAC 系统安装 JDK 及环境变量配置_蜗牛的博客-CSDN博客_mac jdk环境变量配置 MAC 系统安装 Maven 及环境变量配置_蜗牛的博客-CSDN博客_mac安装mpv 二、下载JPMML-LightGBM 先在Git上下载 直接下载或使用git clone http…

Aop切面编程原理和Spring实现

Aop切面编程概念 AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现 日志处理,权限控制,性能检测,事务控制等 AOP实现的原理就是动态代理,在有接口的情况下,使用JDK动态代理,在没有接口的情况下使用cglib动态代理 为Dao层所有的add方法…

字体反爬,一种来自字体设计师的跨行反爬案例 | 案例 28

本篇博客涉及的内容非常有价值&#xff0c;尤其是在反爬领域。 核心内容为自定义字体文件反爬。 文章目录准备工作在 Web 页面中使用字体文件整理文字编码Flask 中随机一串数字&#xff0c;渲染到前台总结准备工作 在正式编写代码前&#xff0c;需要先安装 FontCreator &#…

GeoServer学习笔记-01GeoSever运行编译

一、运行1. 下载GeoServerGitHub仓库地址&#xff1a;https://github.com/geoserver/geoserver2.本地代码工具打开项目在idea里&#xff0c;文件->新建->来自现有的源代码项目&#xff0c;选择项目的pom文件加载项目。3.idea编译环境设置&#xff08;1&#xff09;设置jd…

图论(5)最小生成树简单应用

活动 - AcWing 参考&#xff1a;《算法竞赛进阶指南》-lyd 目录 一、基础算法 二、 1.最短网络&#xff08;prim板子&#xff09; 2.局域网&#xff08;kruskal板子&#xff09; 3.繁忙的都市 4.1143. 联络员 5.连接格点&#xff08;预处理&#xff09; 一、基础算法…

影响电商发展的重要因素及电商未来的发展可能

易观分析&#xff1a;自从互联网传入中国以后&#xff0c;特别是2000年以后&#xff0c;一直保持着非常快的演变速度&#xff0c;而以互联网为基础的电商则更是发展成了中国互联网的代表性行业。中国电商的发展不仅在初期有着非常高的增速&#xff0c;有着多样化的演进路线&…

Numpy(3)—切片和索引、高级索引、Broadcast、迭代数组、广播迭代

1.切片和索引 eg1&#xff1a;我们首先通过 arange() 函数创建 ndarray对象。 然后&#xff0c;分别设置起始&#xff0c;终止和步长的参数为 2&#xff0c;7 和 2。 import numpy as npa np.arange(10) s slice(2, 7, 2) # 从索引 2 开始到索引 7 停止&#xff0c;间隔为…

【笔记】行人属性识别

【论文】https://arxiv.org/pdf/1901.07474.pdf &#xff08;以下序号与论文序列不对应&#xff09; 属性可以看作是高层语义信息&#xff0c;对视点变化和观察条件多样性具有更强的鲁棒性 本文试图解决以下几个重要问题: (1)传统和基于深度学习的行人属性识别算法之间的联系…