入门Django

embedded/2024/12/22 2:25:11/

Django

  • Django 简介
  • URL组成部分详解
  • 第一个Django项目
    • 创建一个Django项目
    • 运行Django项目
    • 项目结构介绍
    • project和app的关系
  • URL与视图函数的映射
  • URL的两种传参方式
    • 在URL中携带参数
  • path函数
    • url路由模块化
    • url反转

Django 简介

  • Django 是一个高级的 Python Web 框架,用于快速开发可维护和可扩展的 Web 应用程序。使用 Django,只要很少的代码,就可以轻松地完成一个正式网站所需要的大部分内容

  • Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式

    • 模型(Model): 编写程序应有的功能,负责业务对象与数据库的映射(ORM)
    • 视图(View): 图形界面,负责与用户的交互(页面)
    • 控制器(Controller): 负责转发请求,对请求进行处理
      在这里插入图片描述
  • 特点:

    • ORM(对象关系映射): Django 提供了一个强大的 ORM,允许开发者通过 Python 代码来定义和操作数据库模型,而无需直接使用 SQL。这使得数据库操作更加抽象和易于管理。
    • MVC 架构: Django 遵循 MVC(模型-视图-控制器)的软件设计模式。在 Django 中,模型(Model)表示数据结构,视图(View)负责呈现用户界面,而控制器(Controller)的职责被称为视图(View)。
    • 模板引擎: Django 使用模板引擎来生成 HTML,这使得前端和后端的代码分离更加容易。Django 的模板语言允许开发者在模板中嵌入动态内容。
    • 自动化 admin 界面: Django 自动生成管理后台,使得管理和操作数据库的过程变得非常简单。开发者可以轻松地创建、修改和删除数据库记录,而无需编写自定义的管理界面。

URL组成部分详解

URL是uniform Resource Locator的简写,统一资源定位符
一个URL由以下几部分组成:
在这里插入图片描述

  • scheme:代表的是访问的协议,一般为http或https以及ftp等
  • host:主机名,域名,比如www.baidu.com
  • port:端口号,http协议是80端口,https协议是443端口
  • path:查找路径。比如:www.baidu.com/trending/now,后面的trending/now就是path
  • query-string:查询字符串,用来传参。比如:www.baidu.com/s?wd=python&a=1,后面的wd=python和a=1就是查询字符串
  • anchor:锚点,后台一般不用管。前端用来做页面定位

第一个Django项目

创建一个Django项目

  • 一,用命令行的方式创建
    • 1.打开想要存放想要存放Django项目的文件夹
    • 2.在文件地址栏输入cmd,按回车键就可以在当前路径打开cmd命令窗口
      在这里插入图片描述
    • 3.在命令行中输入django-admin startproject startdjango
      在这里插入图片描述
    • 4.创建成功
      在这里插入图片描述
  • 二、用pycharm的方式:
    • 点击新建项目,选择Django,如图
      在这里插入图片描述

运行Django项目

  • 一、通过命令行的方式:
    • 1.进入创建好的Django文件夹中,在地址栏输入cmd进入命令提示符
    • 2.在命令提示符中输入 python manage.py runserver
      在这里插入图片描述
    • 3.在网页中输入http://127.0.0.1:8000/,显示下图即创建成功
      在这里插入图片描述
  • 二、通过Pycharm来运行
    • 1.进入urls.py中,点击运行
    • 2.点击运行框中的的地址
      在这里插入图片描述
      在这里插入图片描述

项目结构介绍

  • 1.manage.py:以后和项目交互基本上都是基于这个文件。一般情况下不编辑这个文件
    • 交互方法:在终端输入python.manage.py [子命令];如:可以输入python.manage.py help 看下能做什么事情
  • 2.setting.py:本项目的设置项,以后所有和项目相关的配置都是放在这个里面
  • 3.urls.py:这个文件是用来配置URL路由的。比如访问http://127.0.0.1/news/是访问新闻列表页,这些东西就需要在这个文件中完成
  • 4.wsgi.py:项目与WSGI协议兼容的web服务器入口,部署的时候需要用到的,一般情况下也是不需要修改的

project和app的关系

  • app是django项目的组成部分,一个app代表项目的一个模块,所有URL请求的响应都是由app来处理。
    比如豆瓣,里面由图书、电影、音乐等许许多多的模块。如果站在Django的角度来看,图书、电影、音乐这些模块就是app,他们共同组成豆瓣这个项目,因此这里有个概念:Django项目由许多app组成,一个app可以被用到其他项目,django也能拥有不同的app
  • 创建APP:通过命令 python manage.py startapp book
    在这里插入图片描述

URL与视图函数的映射

  • 1.在urls.py中创建一个index视图函数,返回响应的内容
  • 2.在urls.py的urlpatterns列表中添加path,映射到index函数中
    在这里插入图片描述
  • 3.如果setting.py中的DEBUG = True,则urls.py进行修改后,会自动运行urls.py。最终出现如图表示成功
    在这里插入图片描述
  • 4.如果想要添加path。如:添加方法为s,则需要在域名后添加方法s。才可以访问到视图
    在这里插入图片描述

在这里插入图片描述

URL的两种传参方式

在实际开发中,在urls.py中只会做一些映射,不会去写一些视图函数。视图函数通常会写在各个APP的view.py中。

在URL中携带参数

  • 1.通过查询字符串(query string):https://www.baidu.com/s?wd=python&a=1&b=2
    • 在APP的views.py中
# 1,查询字符串:http://127.0.0.1:8000/book?id=3
def book_detail_query_string(request):#request.GET = {"id":3}book_id = request.GET.get('id')name = request.GET.get('name')return HttpResponse(f"您查找的图书id是:{book_id},图书名称是:{name}")
    • 在urls.py中
urlpatterns = [#http://127.0.0.1:8000/book?id=1path('book',views.book_detail_query_string)]
  • 2.在path中携带:http://127.0.0.1:8000/book/2
    • 在APP的views.py中
# 2.在path中携带:http://127.0.0.1:8000/book/1
def book_detail_path(request,book_id):return HttpResponse(f"您查找的图书id是:{book_id}")
    • 在urls.py中
urlpatterns = [#http://127.0.0.1:8000/book/1#在book_id前指定参数类型有两点好处:#1,以后在浏览器中,如果book_id输入的是一个非整形,那么会出现404错误#2,在视图函数中,得到的book_id就是一个整形,否则默认是str类型path('book/<int:book_id>',views.book_detail_path)
]

path函数

path函数定义为:path(route,view,name=None,kwargs=None)。以下对这几个参数进行详解

  • 1,route参数:url的匹配规则。这个参数可以指定url中需要传递的参数,比如在访问文章详情页时,可以传递一个id。传递参数是通过<>尖括号来进行指定的。并且在传递参数的时候,可以指定这个参数的数据类型,比如文章的id都是int类型,可以写为int:id那么以后匹配时,就只会匹配到id为int类型的url,而不会匹配其他的url。并且在视图函数中获取这个参数的时候,就已经被转换成一个int类型了。其他几种常用类型:
    • str:非空的字符串类型。默认的转换器,但是不能包含斜杠
    • int:匹配任意的零或正数的整形。到视图函数中就是一个int类型
    • slug:由英文中的斜杠 - ,或者下划线_连接英文字符或者数字而成的字符串
    • uuid:匹配uuid字符串
    • path:匹配非空的英文字符串,可以包括斜杠/
      • 示例代码:
      • 视图函数:
def book_int(request,book_id):return HttpResponse(f"您查找的图书id是:{book_id}")def book_str(request,book_id):return HttpResponse(f"您查找的图书id是:{book_id}")def book_slug(request,book_id):return HttpResponse(f"您查找的图书id是:{book_id}")def book_path(request,book_id):return HttpResponse(f"您查找的图书id是:{book_id}")
      • path函数:
urlpatterns = [path('admin/', admin.site.urls),# path('s', index),#https://127.0.0.1:8000/s#http://127.0.0.1:8000/book/1#在book_id前指定参数类型有两点好处:#1,以后在浏览器中,如果book_id输入的是一个非整形,那么会出现404错误#2,在视图函数中,得到的book_id就是一个整形,否则默认是str类型path('book/<int:book_id>',views.book_int),path('book/str/<str:book_id>',views.book_str),path('book/slug/<slug:book_id>',views.book_slug),path('book/path/<path:book_id>',views.book_path)
]
  • 2,view参数:可以为一个视图函数或者是类视图.as_view或者是django.urls.include()函数的返回值
  • 3,name参数:这个参数是给这个url取个名字,这在项目比较大,url比较多的时候用处很大

url路由模块化

  • 1,在对应APP的views.py中创建视图函数
from django.shortcuts import render,HttpResponse
def movie_list(request):return HttpResponse("电影列表")def movie_detail(request,movie_id):return HttpResponse(f"您获取的电影ID是:{movie_id}")
  • 2,在对应APP下面创建urls.py文件,将视图函数传入相应的模块下
from django.urls import path
from movie import views# 指定应用名称(应用命名空间)
app_name = 'movie'
urlpatterns = [path('list', views.movie_list, name='movie_list'),path('detail/<int:movie_id>', views.movie_detail, name='movie_detail'),
]
  • 3,回到主项目的urls.py中,导入include函数,传入相应app下的urls
from django.contrib import admin
from django.urls import path,include
from django.shortcuts import HttpResponse
urlpatterns = [path('admin/', admin.site.urls),path('movie/',include('movie.urls'))
]

url反转

  • 之前我们都是通过url来访问视图函数,如果我们想要反向知道这个视图函数,那么可以通过reverse反转回他的url来实现:
path('book',views.book_detail_query_string,name="book_detail_query_string")
>/book
  • 如果有应用命名空间或者有实例命名空间,那么应该在反转的时候加上命名空间:
print(reverse("movie:movie_list"))
>/movie/list
  • 如果这个url中需要传递参数,那么可以通过kwargs来传递参数:
print(reverse("book_str",kwargs={"book_id":1}))
>/book/str/1
  • 如果是查询字符串的方式传参,那么就只能通过字符串拼接的方式
print(reverse("book_detail_query_string")+"?id=1")
>/book?id=1

http://www.ppmy.cn/embedded/118175.html

相关文章

2024年中国研究生数学建模竞赛B题(华为题目)WLAN组网中网络吞吐量建模一

2024年中国研究生数学建模竞赛B题&#xff08;华为题目&#xff09; WLAN组网中网络吞吐量建模 一、背景 无线局域网&#xff08;Wireless Local Area Network&#xff0c;WLAN&#xff09;是一种无线计算机网络&#xff0c;使用无线信道作为传输介质连接两个或多个设备。WL…

基于微信小程序的童装商城的设计与实现+ssm(lw+演示+源码+运行)

童装商城小程序 摘 要 随着移动应用技术的发展&#xff0c;越来越多的用户借助于移动手机、电脑完成生活中的事务&#xff0c;许多的传统行业也更加重视与互联网的结合&#xff0c;由于城镇人口的增加&#xff0c;人们去商场购物总是排着长长的队伍&#xff0c;对于时间紧的人…

探索光耦:隔离电压——光耦保障电路安全与性能的关键

在现代电子设备和系统中&#xff0c;电气隔离是保障电路稳定运行和安全的重要环节&#xff0c;而光耦&#xff08;光电耦合器&#xff09;则是实现这种隔离的核心元件之一。光耦的一个关键参数就是隔离电压&#xff0c;它不仅影响光耦的性能&#xff0c;还直接关系到设备的安全…

SpringBoot 与 Maven 快速上手指南

SpringBoot 与 Maven 快速上手指南 在Java开发领域&#xff0c;Spring Boot和Maven是两个极其重要的工具&#xff0c;它们极大地简化了企业级应用的开发和构建过程。Spring Boot通过自动配置和起步依赖等特性&#xff0c;让开发者能够快速搭建起一个Spring应用&#xff1b;而M…

KOS×TikTok:创新合作模式下的影响力经济崛起与数字营销变革

在数字营销日益重要的今天&#xff0c;KOS作为一种新兴的影响力角色&#xff0c;正在TikTok上展现出巨大的潜力。通过独特的创意内容和高互动性&#xff0c;KOS不仅推动了品牌传播和产品推广&#xff0c;还实现了自身的影响力变现&#xff0c;为整个数字营销行业带来了深刻的变…

AJAX入门

目录 什么是AJAX? 怎么用AJAX? axios 使用 语法 打开idea创建Web项目&#xff0c;具体代码如下 什么是AJAX? 定义&#xff1a;我认为AJAX就是 获取服务器数据&#xff0c;并显示在浏览器中 怎么用AJAX? 1 先使用axios 库 &#xff0c;与服务器进行数据通信 2 在学习XM…

pytorch U²-Net教程

U-Net (U2-Net) 是一个用于图像分割的神经网络模型&#xff0c;特别擅长于边界复杂的物体分割任务&#xff0c;如前景背景分割和抠图。U-Net 的独特之处在于其 U 形结构和嵌套 U 形块&#xff0c;能够有效捕捉不同尺度的特征&#xff0c;同时保持较小的模型大小。它非常适合在资…

游戏录制没有声音怎么办?简单的解决方法分享

在享受游戏乐趣的同时&#xff0c;不少玩家也喜欢通过录制游戏视频来分享自己的精彩瞬间或是攻略心得。然而&#xff0c;有时在满心欢喜地开始录制后&#xff0c;却发现录制的视频竟然没有声音&#xff0c;这无疑是一大遗憾&#xff0c;今天我们就来看看这个问题怎么解决吧~ 游…