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

创建一个 Django 项目

一、 创建项目

其中:

 

确认项目是否创建成功:

在 manage.py 目录上运行 python manage.py runserver

server 启动后,在浏览器访问 http://127.0.0.1:8000,能正常打开网页表示项目建立成功。

注意:

二、 创建应用

应用和项目有什么区别?应用是一个专门做某件事情的网络应用程序——比如博客系统等。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用,应用也可以被很多个项目使用。我们以一个简单的图书-英雄的应用为例,简单走一遍 Django 开发的流程。

首先在 manage.py 同级目录下创建图书应用,命令如下:

python manage.py startapp booktest

创建之后便可在 manage.py 同级目录下看到一个名为 booktest 的目录,其中包含一些预先设置的 py 文件。

booktest 应用的设计:

三、 编写模型——Model

模型(Model)负责与数据库相关的操作。

默认数据库是 sqlite,可以通过修改 settings.py 来改变默认数据库。

step1:编写模型类

定义模型类的目的包括:

1. 根据模型类的定义生成 sql 语句,并创建数据库表

2. 根据模型类生成对象,将对对象的各种操作映射到数据库中表格内容的变化(增删改查)

django 2.0中:
hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE)

step2:生成数据库表

step3: 测试数据

step4: 关联对象的操作

四、 创建后台管理站点——Admin

一般一个站点分为“内容发布”和“公共访问”两部分。内容发布的部分负责添加、修改、删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力的工

作。为此,Django 会根据定义的模型类完全自动的生成管理模块

step1:创建一个管理员用户

运行命令: python manage.py createsuperuser

根据提示输入用户名,邮箱以及密码启动服务器,访问 http://127.0.0.1:8000/admin,输入用户名、密码即可进入管理站点,,默认可以对 groups、

users 进行管理。

step2: 管理界面本地化

编辑 settings.py,设置语言和时区

step3: 向 admin 注册 booktest 的模型,以便对其进行管理

step4: 自定义管理界面

列表页的定制:

添加、修改页的定制:

五、 编写视图——View

视图对 web 请求进行回应。视图的本质是一个函数,定义在 views.py 中。它接收request 对象作为第一个参数,request 中包含了请求的信息。

step1: 编写视图函数

step2: 配置 URL 路由

用户的请求到达服务器后,Django 使用正则表达式匹配请求的 URL,先去项目下的urls.py 中进行匹配,找到二级路由继续进行匹配,一旦匹配成功,则调用相应的视图。

注意:只匹配路径部分,即除去域名、参数等

1. 在项目(mysite)的 urls.py 中配置 bookset 的 urls 的路由

2. 在 bookset 的 urls.py 中调用视图

启动 server,访问 http://127.0.0.1:8000 便可看到 index 函数中的输出信息。

注意: Django2.0 开始路由的配置发生了变化,开始使用 path()函数,但它依然向老版本兼容。而这个兼容的办法,就是用 re_path()方法代替

path()方法。re_path()方法在骨子里,根本就是以前的 url()方法。

后面的章节中,你只需要使用 from django.urls import re_path 正确导入 re_path()方法,并用它替换 url()方法就可以了。

六、 编写模板——Template

模板是 html 页面,可以根据视图中传递的数据填充值。

step1: 创建 templates 目录

在项目目录下创建 templates 目录,并在 templates 目录中继续创建 booktest 目录。templates 下可以添加多个模板,以应用为单位进行组织。

step2: 修改 settings.py 文件,设置 TEMPLATES 的 DIRS 值

step3: 定义 index.html

在 templates\booktest 下创建 index.html

step4:编辑 views.py,在方法中调用模板

 

这时,启动 server,访问 127.0.0.1:8000 便可看到 index.html 显示的内容

step5: 在模板中显示数据

视图(V)从模型(M)中获得数据,通过上下文传递给模板(T),模板进行处理。

在 views.py 的 index 方法中改写:

在 index.html 中接收传进的 context,并做处理。

在模板中访问视图传递的数据的两种方式:

1.{{输出值}} , 该输出值可以是变量,也可以是对象.属性

2.{%执行代码段%}

运行 server,便可看到 book 的名字信息。

七、 总结

流程:
 1.设计
    模型类(数据表,字段,类型)
    视图中的方法
    视图中方法对应的 url,url 路由
 2.编写模型,使用简单 API 与数据库交互
 3.使用 Django 的后台管理功能维护数据
 4.编写视图,接收用户请求,通过模型获得数据,并将数据传递给模板
 5.调用模板,接收并处理视图传递的数据,最终呈现给用户

转载于:https://www.cnblogs.com/sunBinary/p/10424311.html

相关文章:

  • GitHub如何下载clone指定的tag
  • 技术面试感觉什么都会,面试官一问回答不上来怎么办?
  • 性能测试总结(二)---测试流程篇(转载)
  • servlet,javabean,客户端跳转和服务端跳转。
  • 启动从Windows Server 2016发布的应用程序时,黑屏在应用程序可见之前出现几秒钟...
  • 如何自己制作iconfont
  • URL与URI的不同
  • Dubbo 安装监控中心
  • 实习面试笔记
  • spring-boot List转Page
  • Python 之网络式编程
  • 最新人脸识别开发经验demo
  • 2019年3月
  • CodeForces 226C The table[贪心]
  • ThinkPHP 发布 5.1.35 版本,常规更新
  • css选择器
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Java程序员幽默爆笑锦集
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Python3爬取英雄联盟英雄皮肤大图
  • Sass Day-01
  • Solarized Scheme
  • 创建一个Struts2项目maven 方式
  • 分享一份非常强势的Android面试题
  • 欢迎参加第二届中国游戏开发者大会
  • 深度解析利用ES6进行Promise封装总结
  • 数据可视化之 Sankey 桑基图的实现
  • 项目管理碎碎念系列之一:干系人管理
  • 国内开源镜像站点
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (实战篇)如何缓存数据
  • (图)IntelliTrace Tools 跟踪云端程序
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Oracle存储过程编写经验和优化措施
  • (转)大型网站架构演变和知识体系
  • (转)可以带来幸福的一本书
  • (转载)(官方)UE4--图像编程----着色器开发
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net 反编译_.net反编译的相关问题
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • @31省区市高考时间表来了,祝考试成功
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [.net] 如何在mail的加入正文显示图片
  • [100天算法】-二叉树剪枝(day 48)
  • [2023-年度总结]凡是过往,皆为序章