Django框架(二)编写第一个Django应用程序——第一部分

本文介绍了如何根据Django官方教程创建第一个Django应用程序,包括设置项目、生成应用、编写视图和URL配置,以及理解项目与应用程序的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django官方网站提供的文档中包含一个编写Django的应用程序教程(文档地址:Writing your first Django app, part 1 | Django documentation | Django),本文接下来将会以此为例进行记录说明如何编写一个Django应用程序。

编写第一个Django应用程序,第一部分

我们通过学习官网提供的教程来完成基本民意应用程序的创建。它由两部分组成:

  • 一个允许人们查看民意调查并投票的公共网站。
  • 允许添加、更改和删除投票的管理站点。

创建投票应用程序

我们在上一篇文章中已经完成了Django的环境搭建,并且创建了一个项目,接下来的工作就是在这个创建的项目中进行的。

Django中编写的每个应用程序都包含一个遵循特定约定的Python包,Django附带了一个实用程序,可以自动生成应用程序的基本目录结构,因此我们可以专注于编写代码而不是创建目录。

项目与应用程序

项目和应用程序有什么区别?应用程序是一种执行某些操作的网络应用程序,例如博客系统、公共记录数据库或小型民意调查应用程序。项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序,一个应用程序可以位于多个项目中。

我们进入 mysite 目录中,在该目录下打开命令行程序输入以下命令:

# python manage.py startapp <应用程序名称>
python manage.py startapp polls

命令执行完成后,将会在mysite目录下创建一个名称为polls的目录,其布局如下所示:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

在该目录中编写投票应用程序。

编写第一个视图

我们现在来写第一个视图。打开文件 polls/view.py 并将以下代码放入其中:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're ate the polls index.")

这可能是Django中最简单的视图了。要调用视图,我们需要将其映射到URL——为此我们需要一个URLconf。

为了在polls目录中创建URLconf,我们创建一个名为 urls.py 的文件。创建完成后,我们的应用程序目录应该是下面这个样子的:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

在 polls/urls.py 文件中编写以下代码:

from django.urls import path

from . import views

urlpatterns = [
    path("", views.index, name="index")
]

下一步是将URLconf指向 polls.urls 模块。在 mysite/urls.py 中添加 django.urls.include 导入,然后将在 urlpatterns 列表中插入 include(),我们得到以下代码:

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

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

include() 函数允许引用其它URLconf。每当Django遇到include()时,它都会截掉URL中与该点匹配的任何部分,并将剩余的字符串发送到包含的URLconf中进行进一步处理。

include() 背后的想法是让即插即用的URL变得容易。由于投票应用程序拥有其自己的URLconf(polls/urls.py),因此它们可以被放置在“/polls/”下,“/fun_polls/”下、“/content/polls”下或其它任何路径下,应用程序仍将正常运行。

什么时候使用include()

当你要包含其它URL模式匹配的时候你应该使用include()admin.site.urls是唯一的例外。

我们现在已经将index视图连接到URLconf中,接下来我们看一下它是否正常工作。在命令行中输入以下命令启动开发服务器:

python manage.py runserver

启动成功后,我们在浏览器中访问 http://localhost:8000/polls/,不出意外的话,你应该会看到我们在index视图中定义的文本“Hello, world. You’re ate the polls index.”。

现在我们回过头来看一下path()函数。path()函数包含四个参数,其中有两个参数是必须的:分别是routeview,两个参数是可选的,分别是:kwargsname。我们现在来看一下这四个参数的含义。

  • route
    • route是包含URL模式的字符串。处理请求时,Django从第一个模式开始,沿着urlpatterns列表向下进行移动,将请求的URL与每个模式进行比较,直到找到匹配的模式。
    • 模式不搜索GET和POST参数或域名。例如:有一个对 https://www.example.com/myapp/ 的请求,URLconf将查找 myapp/。在请求 https://www.example.com/myapp/?page=3 中,URLconf同样会查找 myapp/
  • view
    • 当Django找到匹配模式时,它会调用指定的视图函数,并将HttpRequest对象作为第一个参数,并将路由中的任何“捕获”值作为关键字参数。
  • kwargs
    • 任意关键字参数可以通过字典传递到目标视图。在官网的投票应用程序教程中,并不使用Django的这个功能。
  • name
    • 命名URL可以让我们从Django中的其它位置(尤其是在模板中)明确地引用它。这一强大的功能可以使我们对项目的URL模式进行全局更改,而这种更改只需要接触一个文件。

欢迎关注我的公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值