Python Django Web 框架编程 - 创建应用及视图
wptr33 2024-11-26 09:30 25 浏览
现在开发环境中的 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() 具有四个参数,两个必须参数:route 和 view,两个可选参数:kwargs 和 name。
- 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 函数来处理这个请求。
- 上一篇:47 张图带你 MySQL 进阶
- 下一篇:35 张图带你 MySQL 调优
相关推荐
- 一篇文章带你了解PHP的学习使用(php的教程)
-
ThinkPHP5实战...
- 在memcached管理php的session(memcached libevent)
-
PHP的session(会话管理)一般是以文件形式进行,而在多个Web服务器之间进行session管理时memecached会比文件管理方式更加方便。在这里介绍如何使用memcached管理PHP的s...
- php传值和传引用的区别(php 传值和传引用)
-
php传值:在函数范围内,改变变量值得大小,都不会影响到函数外边的变量值。PHP传引用:在函数范围内,对值的任何改变,在函数外部也有所体现,因为传引用传的是内存地址。传值:和copy是一样的。【打个比...
- PHP 常量详解教程(php常量和变量)
-
常量类似变量,但是常量一旦被定义就无法更改或撤销定义。PHP常量常量是单个值的标识符(名称)。在脚本中无法改变该值。有效的常量名以字符或下划线开头(常量名称前面没有$符号)。注释:与变量不同,常...
- php自学零基础入门小知识(php新手入门教程)
-
我们就把PHP入门当成一个苹果吧!一口一口的吃掉他!不啰嗦了!开始了1、嵌入方法:类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定。2、...
- PHP 语法详解(php语法大全)
-
PHP脚本在服务器上执行,然后向浏览器发送回纯HTML结果。基础PHP语法PHP脚本可放置于文档中的任何位置。PHP脚本以<?php开头,以?>结尾:<?php...
- PHP笔记(一)PHP基础知识(php必背知识点)
-
创建PHP程序PHP代码框架<?php>2.文件命名规则...
- PHP 8新特性之Attributes(注解),你掌握了吗?
-
PHP8的Alpha版本,过几天就要发布了,其中包含了不少的新特性,当然我自己认为最重要的还是JIT,这个我从2013年开始参与,中间挫折无数,失败无数后,终于要发布的东东。不过,今天呢,我不打算谈J...
- PHP基本语法之标记与注释(php注释规范)
-
1、标记由于PHP是嵌入式脚本语言,它在实际开发中经常会与HTML内容混在一起,所以为了区分HTML与PHP代码,需要使用标记对PHP代码进行标识。如:<html>...
- php注解(PHP注解 性能)
-
目标了解和使用php注解,如果你已经掌握其他一种具有注解的语言,例如:java、python等,你在本文中只需要了解点语法就行。示例php8以前的版本,注解写在注释里,如果你掌握其他语言的注解,你是不...
- 数据丢失?别慌!MySQL备份恢复攻略
-
想象一下,某个晴朗的午后,你正享受着咖啡,突然接到紧急电话:你的网站或APP彻底挂了!系统崩溃,界面全白。虽然心头一紧,但你或许还能安慰自己:系统崩溃只是暂停服务,数据还在,修复修复就好了。然而,如果...
- MySQL 日志:undo log、redo log、binlog
-
今天来和大家分享MySQL的三个日志文件,可以说MySQL的多数特性都是围绕日志文件实现,而其中最重要的有以下三种:...
- MySQL三大日志:binlog、redolog、undolog全解析
-
binlog概述在MySQL数据库中,binlog可是个相当重要的存在,它的全称为binarylog,也就是二进制日志。它就像是数据库的“记忆本”,记录了所有的DDL(数据定义语言)和...
- 1、MySQL数据库介绍(mysql数据库简单介绍)
-
1.1数据库的核心定义数据库的本质数据库乃存储数据对象之容器,涵盖如下关键组件:表(Table)...
- MySQL 日志双雄:实时监控与历史归档实战优化
-
MySQL日志双雄:实时监控+历史归档实战用这招让你家日志系统再也不卡不爆炸MySQL十亿级日志处理:从洪峰到归档全攻略手把手教你用MySQL搞定ELK级日志监控在微服务架构大行其道的今天,日志系统早...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)