Django 实战(2)—— 视图与 URL 配置

前文

Django 实战 (1)—— 创建第一个Django项目

通过上一章我们学会了如何创建 Django 项目,并且运行了 Django 项目,但是并不能满足你们的期望吧?OK 我们可以编写一些东西向页面展示一下,写什么呢?我们学编程输出最多的就是 Hello World 了,经典啊。OK 我们编写一下代码,在页面输出 Hello Django
具体怎么做呢?

创建你的第一个app

app 是什么?就好比你的手机的一个软件是一个app,一部手机可以有多个app,同样的在 Django 也是一样,一个 Django 可以有多个 app,怎么创建呢?

首先我们点击 terminal 终端
在这里插入图片描述
我们可以借助一下命令,如下:

python manage.py startapp 你的app名

例如我们创建一个名为 webapp 的 app,输入完之后点击回车
在这里插入图片描述
OK,app 创建完成,我们还可以继续创建 app,但是这里并不需要创建那么多
在这里插入图片描述
说明:

  • migrations :数据库修改表结构的记录
  • admin :django 为我们提供的后台管理
  • apps :配置当前app的,暂时用不到
  • models :ORM,写指定的类,通过命令可以创建数据库结构
  • tests :单元测试
  • views :业务代码

编写你的第一个基于 Django 的页面

OK,开始撸代码,我们打开 views.py 文件
在这里插入图片描述
可以发现,这个文件空空如也,我们给它添加点东西

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello Django")

在这里插入图片描述
上面这段代码什么意思呢?来分析一下

  • from django.http import HttpResponse:导入一个 HttpResponse 类,您编写的每个视图都负责实例化,填充和返回 HttpResponse
  • def hello(request) :定义一个名为 hello 的视图函数,每个视图函数至少要有一个参数,通常被叫作 request。这是一个触发这个视图、包含当前 web 请求信息的对象,是 django.http.HttpRequest 的一个实例,虽然这里的 request不用做任何事情,但是它仍必须是这个视图的第一个参数。关于什么是 django.http.HttpRequest ?后续会讲到
  • return HttpResponse(“Hello Django”) : 这句代码仅仅返回一个 HttpResponse 对象,这个对象包含了文本 “Hello Django”

注意: 视图函数的名称是可以随意命名的

OK,我们启动一下项目,我们的 Django 项目除了可以点击运行按钮之外还可以使用命令的方式启动,启动命令如下:

python manage.py runserver

OK,启动访问一下
在这里插入图片描述
怎么回事???怎么还是欢迎界面?
原因是因为虽然我们编写了代码但是我们对 mysite 项目中 hello 的视图一无所知,不知道是通过什么访问的。所以我们需要通过一个详细描述的 URL 来显式地告诉它并且激活这个视图。为了绑定视图函数和 URL ,我们需要使用 URLconf

什么是 URLconf?

URLconf 就好比如是 Django 所支撑的网站目录,它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。
而我们要做的就是以这种方式告诉 Django,对于这个 URL 调用这段代码,还是对于哪个 URL 调用哪段代码。打个比方,比如当我们在 http://127.0.0.1:8000/后面加上 hello (即http://127.0.0.1:8000/hello)的时候调用的是 hello 这个函数
这个视图存在于 Python模块文件 views.py 中,而 URLconf 存在于 urls文件中,我们打开看一下
在这里插入图片描述

# 上图中的代码
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

可以看到这个 urls 文件中除了一大段注释以外只有几行代码,那么这几行代码到底是什么东西呢?我们来分析一下

  • from django.contrib import admin : 导入admin用户管理页面(可以先忽略)
  • from django.urls import path : 返回要包含在中的元素urlpatterns

修改 urls.py 中的代码

修改后的代码(其实就是新增了两行代码)为下图所示:
在这里插入图片描述
具体代码

from django.contrib import admin
from django.urls import path
from webapp.views import hello

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/',hello)
]

说明:

  • 当我们导入 from webapp.views import hello 的时候,webapp 目录下的views.py 文件会转译为 webapp.views ,然后我们就可以导入 hello 函数了
  • path(‘hello/’,hello) : 这句代码告诉 Django 所有指向 /hello 的请求都应该由 hello 这个函数来处理

我们再次访问一下 http://127.0.0.1:8000/hello/ ,OK,成功显示了我们编写的 Hello Django
在这里插入图片描述

发布了184 篇原创文章 · 获赞 864 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/Woo_home/article/details/103705741
今日推荐