百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Python Django Web 框架编程 - 创建应用及视图

wptr33 2024-11-26 09:30 38 浏览

现在开发环境中的 mysite 项目已经配置好了,可以开始开发实际的应用了。

在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮助生成应用的基础目录结构,这样就能专心写代码,而不是创建目录结构了。

创建投票应用

项目和应用的区别

应用(App)是一个专门做某件事的网络应用程序,例如博客系统,或者公共记录的数据库,或者小型的投票程序等。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。

创建应用 App

一个项目包含多个应用app。一个app 通常就是一个相对独立的模块 ,实现相对独立的功能。

在 VSCode 中,点击 Toggle Panel,显示出 Terminal Panel,在Terminal Panel中点击一下,然后按 Ctrl + C,切换回项目目录,然后输入下面的命令:

python manage.py startapp polls    # polls 就是应用名字

执行完之后,就创建了 polls 应用,会发现多了一个 polls 文件夹,这里保持的就是应用 App 的代码。同时也多了一个文件 db.sqlite3,这是 Django 默认自带的数据库,可以直接使用。当然也可以配置其他数据库,例如 mysql 数据库。

polls 应用下各文件说明如下图:

注册应用

在项目设置文件 settings.py 中的 INSTALLED_APPS 添加应用 polls,完成注册过程。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',    #注册应用 polls
]

编写视图

打开 polls/views.py,把下面这些 Python 代码输入进去:

from django.http import HttpResponse

#定义视图函数
def index(request):
    return HttpResponse("你好,这里是第一个 Django 页面!")

这是 Django 中最简单的视图。当然现在还看不到效果,如果想看见效果,需要将一个 URL 映射到它。

URL 配置

在 VSCode在,在 polls 目录点击右键,选择“New File”,然后输入文件名urls.py,就新建一个 urls.py 文件,该文件实现了绑定 URL 到 views.py 的视图函数。

在 polls/urls.py 中,输入如下代码:

from django.urls import path

from . import views

urlpatterns = [
    path('index', views.index, name='index'),     #表示将 polls 应用的默认页绑定到了 index 视图函数
]

然后需要在主路由 urls.py 文件中指定新创建的 polls.urls 模块。在 mysite/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),    #将polls.urls 模块包含进来
    path('admin/', admin.site.urls),
]

函数 include() 允许引用其它 URL。每当 Django 遇到 include() 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URL 以供进一步处理。

设计 include() 的理念是使其可以即插即用。因为 polls 应用有它自己的 URL( polls/urls.py ),他们能够被放在 "/polls/" , "/fun_polls/" ,"/content/polls/",或者其他任何路径下,这个应用都能够正常工作。

重新启动服务器,在 VDCode 的 Terminal panel 中运行 runserver:

python manage.py runserver   

浏览器访问 http://localhost:8000/polls/index,你应该能够看见 "你好,这里是第一个 Django 页面!" ,这是在 index 视图函数中定义的返回内容。

path() 函数

函数 path() 具有四个参数,两个必须参数:routeview,两个可选参数:kwargsname

  • route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。这些准则不会匹配 GET 和 POST 参数或域名。
  • view 当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。
  • kwargs 任意个关键字参数可以作为一个字典传递给目标视图函数。
  • name 为 URL 取个名字,能够在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许在只改一个文件就能全局地修改某个 URL 模式。

url路由

在创建项目目录的时候,在项目的设置目录下,有如下的一个 urls.py 文件,这个是主路由文件。这个文件是 url路由设置的入口文件。文件中 urlpatterns 列表就是 Django 的 url 路由的入口。里面是一条条的路由记录,例如添加的:path('polls/', include('polls.urls')),

就是告诉当前端过来的请求 url地址 是 /polls/ (注意:最后的一个斜杠不能省略) ,函数 include() 允许引用子路由文件,例如应用 polls 的 urls.py。每当 Django 遇到 include() 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到子路由文件以供进一步处理。

在应用 polls 中,urls.py 文件是子 url 路由设置的入口文件。文件中 urlpatterns 列表就是 Django 的 url 路由的入口。里面是一条条的路由记录,例如:path('index/', views.index, name='index')

就是告诉当前端过来的请求 url地址 是 /polls/index/ (注意:最后的一个斜杠不能省略) , 就由 views.py 里面的函数 index 来处理。

所以,所谓路由就是指 : 根据 HTTP请求的url路径, 设置 由哪个 view 函数来处理这个请求。

相关推荐

oracle数据导入导出_oracle数据导入导出工具

关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...

继续学习Python中的while true/break语句

上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...

python continue和break的区别_python中break语句和continue语句的区别

python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...

简单学Python——关键字6——break和continue

Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...

2-1,0基础学Python之 break退出循环、 continue继续循环 多重循

用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...

Python 中 break 和 continue 傻傻分不清

大家好啊,我是大田。...

python中的流程控制语句:continue、break 和 return使用方法

Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...

L017:continue和break - 教程文案

continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...

作为前端开发者,你都经历过怎样的面试?

已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...

面试被问 const 是否不可变?这样回答才显功底

作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...

2023金九银十必看前端面试题!2w字精品!

导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...

前端面试总结_前端面试题整理

记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...

2024前端面试真题之—VUE篇_前端面试题vue2020及答案

添加图片注释,不超过140字(可选)...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...