Python Django(二)—— 项目结构、配置简介、路由与视图函数

本文截图来自b站视频课程,个人觉得讲得挺清晰的,适合小白快速入门。另外还有一些自己的笔记和做的里面题目之类的,都放在一起了。2021最新版Django全套视频(django框架快速上手)_Python全栈_哔哩哔哩_bilibili

官方文档

  • https://docs.djangoproject.com/en/2.2/
  • 中文版 https://docs.djangoproject.com/zh-hans/2.2/

一、 项目结构

Python Django(二)—— 项目结构、配置简介、路由与视图函数

二、 配置文件

Python Django(二)—— 项目结构、配置简介、路由与视图函数

配置项名一定要大写

Python Django(二)—— 项目结构、配置简介、路由与视图函数

如果以调试模式运行,一是报错日志量太大,二是会暴露很多代码信息,因此不能用于生产环境。例如随便输一个不存在的网址

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

这个时区一般要改

Python Django(二)—— 项目结构、配置简介、路由与视图函数

三、 URL 和视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

例如

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Django如何处理URL的请求

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

匹配只关注端口/后面的部分(蓝色部分,不包括/)

Python Django(二)—— 项目结构、配置简介、路由与视图函数

四、 视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

五、 路由配置 path

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Name主要是地址特别复杂时,用别名简化

1. 小练习1

Python Django(二)—— 项目结构、配置简介、路由与视图函数

① 首先修改路由文件 urls.py ,匹配对应字符及对应views函数

urlpatterns = [
默认的,不用管它
path(‘admin/’, admin.site.urls),
首页,匹配 http://127.0.0.1:8000,空字符串就表示8000后什么都不加
path(”, views.home_view),
第1页,匹配 http://127.0.0.1:8000/page/1
path(‘page/1’, views.page1_view),
第2页,匹配 http://127.0.0.1:8000/page/2
path(‘page/2’, views.page2_view)
]

  • *② 建一个views文件,在里面创建3个对应的函数
#!/usr/bin/env python
-*- coding:utf-8 -*-
#@Time  : 2022/6/4 14:33
#@File  : views.py

from django.http import HttpResponse

主页对应视图函数
def home_view(request):
    html = "这是我的首页"
    return HttpResponse(html)

第1页对应视图函数
def page1_view(request):
    html = "这是编号为1的网页"
    return HttpResponse(html)

第2页对应视图函数
def page2_view(request):
    html = "这是编号为2的网页"
    return HttpResponse(html)

③ 启动项目

python manage.py runserver

简单测试一下

Python Django(二)—— 项目结构、配置简介、路由与视图函数

2. 小练习2

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

Python Django(二)—— 项目结构、配置简介、路由与视图函数

业务中一般比较常用str和int

将前面案例的页数改为path转换器实现:

① 路由规则 urls.py

urlpatterns = [
匹配任意页数,例如 http://127.0.0.1:8000/page/200
path(‘page/‘, views.page_num_view)
]

② 视图函数

任意页数对应视图函数,加了一个page_num的参数

def page_num_view(request,page_num):
html = “这是编号为 %s 的网页” % page_num
return HttpResponse(html)

③ 保存,不用重启项目,立即会生效

Python Django(二)—— 项目结构、配置简介、路由与视图函数

3. 小练习3

Python Django(二)—— 项目结构、配置简介、路由与视图函数

核心在于这个路由规则:整数/字符串[add/sub/mul]/整数

① 加一条路由规则,需要3个参数

path(‘//’, views.calculate_view)

② 视图函数

小计算器
def calculate_view(request,num_1 ,opt,num_2):
if (opt == ‘add’):
result = num_1 + num_2
elif (opt == ‘sub’):
result = num_1 – num_2
elif (opt == ‘mul’):
result = num_1 * num_2
else:
result = ‘抱歉,暂不支持该运算类型’
html = “计算结果是: %s ” % result
return HttpResponse(html)

测试执行

Python Django(二)—— 项目结构、配置简介、路由与视图函数

六、 路由配置 re_path

Python Django(二)—— 项目结构、配置简介、路由与视图函数

1. 小练习4

修改一下上面的案例,只能计算不超过2位的整数,3位以上只取前两位

Python Django(二)—— 项目结构、配置简介、路由与视图函数

urls.py文件

① 先要引入re_path模块

from django.urls import path,re_path

② 配置路由规则

小计算器,http://127.0.0.1:8000/整数/字符串[add/sub/mul]/整数
这次整数部分不能超过2位,例如 http://127.0.0.1:8000/10/add/20
re_path(r’^(?P /(?P /(?P$’, views.calculate_view)

解释一下这个含义:

  • re_path(r”) 表示这是个正则表达式,^…$表示以什么开头和结束
  • 里面还是3个参数,用/分隔
  • (?P
  • d{1,2} 匹配 1或2位整数,w+ 匹配至少1位数字或字符

注意这个路由规则不能写到原先那条下面,因为一旦匹配到就停了。所以要么删掉之前那条,要么放到它上面。

calculate_view函数不用动,因为逻辑没有变。

跑一下

Python Django(二)—— 项目结构、配置简介、路由与视图函数

奇怪的结果出现了。。。可以猜到它应该是把20和10当成了字符串,我们再试试sub

Python Django(二)—— 项目结构、配置简介、路由与视图函数

这个报错就很明显了

2. 修正小练习

所以正则表达式匹配后返回的确实是字符串,需要我们在calculate_view函数里给它转一下。

def calculate_view(request,num_1,opt,num_2):
num_1 = int(num_1)
num_2 = int(num_2)

后面都一样

Python Django(二)—— 项目结构、配置简介、路由与视图函数

网上好多文章包括这个视频教程都只是print一下,并不能直接看出类型,所以还是得自己动手试试。

Original: https://blog.csdn.net/Hehuyi_In/article/details/125123062
Author: Hehuyi_In
Title: Python Django(二)—— 项目结构、配置简介、路由与视图函数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/732682/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 3.Flask 中的线程

    3.Flask 中的线程 from threading import Thread import time class Foo(): def __init__(self): sel…

    Python 2023年8月14日
    075
  • 用 Python 创建属于自己的网易云音乐

    今天我们将用Python来创建一个属于自己的音乐播放器。为此,我们将使用三个软件包: Tkinter:用于UI Pygame:播放音乐 os:用于访问系统文件 在这里我们将看到创建…

    Python 2023年9月23日
    044
  • selenium在scrapy中的使用(网易新闻)

    目录 前言 流程 创建项目 项目结构 修改配置文件(settings.py) 编写爬虫文件(wangyi.py) 编写中间件(middlewares.py) 继续编写爬虫文件(wa…

    Python 2023年10月3日
    060
  • 【C++】打开C++的大门

    目录 前言 1.什么是C++ 2.C++的发展史 3.C++关键字(C++98) 4.命名空间 * 4.1命名冲突 4.2命名空间定义 4.3命名空间使用 5.输入输出 6.缺省参…

    Python 2023年11月5日
    041
  • 这是一个容易挨打的Python代码,给对方无限自动发送QQ消息

    我在工作中无事可做,想找点乐子,所以我做了一个简单版的自动发送消息的小代码。 [En] I have nothing to do at work and want to have …

    Python 2023年5月24日
    0272
  • JavaScript入门⑧-事件总结大全

    JavaScript入门系列目录 JavaScript入门①-基础知识筑基 JavaScript入门②-函数(1)基础{浅出} JavaScript入门③-函数(2)原理{深入}执…

    Python 2023年10月13日
    049
  • 视频中转服务源码 原创

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    Python 2023年5月23日
    083
  • python爬虫——scrapy+mysql存储数据

    启动mysql:net start mysql 进入mysql:mysql -u root -p 创建数据库: create database xxx(表名称); 查看数据库:sh…

    Python 2023年10月2日
    047
  • Python如何创建二维数组和初始化

    一、Python用什么表达二维数组 严格意义上说,Python中并没有数组的概念,Python中表达一组数据有多种形式,例如list,tuple,set等数据结构都可以表达一组数,…

    Python 2023年8月23日
    055
  • python pandas 多进程 apply

    今天介绍一个库,叫 pandarallel,用于pandas库多进程执行. 安装库 pip install pandarallel 测试平台: 32位树莓派系统 Pi OS pyt…

    Python 2023年8月8日
    047
  • matplotlib.pyplot使用汇总

    本文介绍了我在工程开发过程中使用python的matplotlib.pyplot常用的一些功能。 引用matplotlib.pyplot import matplotlib.pyp…

    Python 2023年9月2日
    086
  • python add_argument() 方法详解

    官方文档的说明 首先我们来看一下官方文档的说明,了解一下 add_argument() 有哪些参数,接下来的介绍中 引用块都是所有官方文档的原文,对于每一个参数及其取值的说明会加上…

    Python 2023年8月1日
    050
  • 3. Scrapy爬虫实践

    是一款基于 框架,旨在快速、高效地从网页中提取数据。它的优点包括支持异步网络请求、可扩展性强、易于使用等。 在实战中,使用 开发 需要遵循以下步骤: 1. 创建 项目:使用命令 &…

    Python 2023年10月3日
    040
  • 9.pytest 单元测试框架

    pytest 是一个第三方单元测试框架,更加简单、灵活,而且提供了更加丰富的扩展,弥补了 unittest 在做 Web 自动化测试时的一些不足。 pytest 简单例子 pyte…

    Python 2023年9月12日
    033
  • matplotlib之pyplot模块plot函数基础四(只显示坐标点而不显示线)

    plot函数是 matplotlib中最常见的绘图函数,作用是以 x为自变量 y为因变量绘制的带结点标记的线条或以 x,y为坐标的坐标点(Plot y versus x as li…

    Python 2023年9月5日
    066
  • FCOS论文复现:通用物体检测算法

    摘要:本案例代码是FCOS论文复现的体验案例,此模型为FCOS论文中所提出算法在ModelArts + PyTorch框架下的实现。本代码支持FCOS + ResNet-101在M…

    Python 2023年10月28日
    032
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球