[译]Django Documentation 中文翻译——第二章(第三节)

2.3 开始编写你的第一个 Django APP(第一部分)

我们先举个栗子:

通过本文档,我们将帮你轻松处理(walk throuth)创建一个基本投票 APP。

这个APP 有两部分组成:①一个公开的网页,可以让人民看到投票选项并为之投票;②一个 admin 网址,可以让你对投票进行增改删处理

然后我们现在已经成功安装了 Django,首先需要现确定 Django 版本: python - m django --version,过没有安装 django 的话会 报错“No module named django”。

本文件针对 django4.0 撰写,同时支持 3.8 版本及以上。如果版本不适合的话,你需要查询自己对应版本的文档,如果使用老版本的 Python,需要查询适用于 django 的 Python 版本。

帮助查询
如果你有对本文档有问题的话,请查询 FAQ getting help部分

2.3.1 创建一个项目

如果你是第一次使用 django 的话,需要注意洗衣额初始化设置。即,你需要自动创建一些代码以创建 djan 项目(project)——是 django 实例的一系列设置的集合,包括数据库参数、Django相关的选项以及应用相关设置。

从命令行开始,进入到你想保存代码的文件夹中,运行一下命令

django-admin startproject mysite
复制代码

此时会在当前目录下创建一个叫“mysite”的文件夹,如果没有成功的话查询: Problems running django-admin。

注意:你创建的项目名称应避免 Python 或者 Django 内置命令,尤其是要避免使用;类似于”djano”(与 Django 本身冲突)或者“text”(与Python 内置模块冲突)之类的名称

如果你的背景是平凡而老旧的 PHP 语言(没有使用现代的框架),你可能适应了将代码编写到 web服务文件根路径(如:/var/www)。但以后了 Django 后,你就不必再这样了。将这些 Python 代码放到 web 服务文件根目录并并明智,因为这样有被别人通过 web 访问到你代码的风险,不安全哦。

创建 新建项目的样式

image.png

文件介绍:

  • site/: 根目录,是你项目的集合文件夹。其名字与 Django 无关,可以更新名字
  • manage.py : 是一个命令行应用,可以让你以多种方式与 Django 互动,可以从n django-admin and manage.py获得相关信息
  • 外部的 mysite/:文件夹你的项目实际 Python 包,它的名字就是 你会用用来导入所需文件的Python包的名字。

mysite/__init__.py: 是一个空文件,可以告诉 Python 这个目录是一个 Python 包。如果你是 Python 新手,可以从Python 官方文档阅读更多关于包的内容

  • mysite/settings.py: 为该 Django 项目进行设置(配置), Django settings 或告诉你如何配置的工作
  • mysite/urls.py:对 Django 项目的 URL 路径的声明, Django-驱动网站的“目录”,更多关于 URL 信息请阅读“URL dispatcher”
  • mysite/asgi.py :是一个兼容 ASGI网络服务的入口,更多信息“ How to deploy with ASGI”
  • mysite/wsgi.py : 是一个 兼容WSGI网络服务的入口,更多信息“See How to deploy with WSGI”。

2.3.2 开发服务(the development server)

我们开确认你的 Django 项目可以工作:进入到外部的 mysite 目录下,如果没有进入的话,运行一下命令

    python amnage.py sunserver
复制代码

你会看到下列信息的

# 系统显示
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are ˓→applied.
Run 'python manage.py migrate' to apply them.
May 18, 2021 - 15:50:53
Django version 4.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
复制代码

注意:忽略应用的数据库迁移警告,我们随后会处理数据库

你已经开始了 Django 开发服务,一个淡村用 Python 写的轻量级的 web 服务。我们已经包括了这些,因此可以可以快速的开发,而不用处理各种配置一个生产服务端(如 Apache),知道你已经准备好用于生产服务。
现在,需要注意的是:在类似生产任何环境下不要使用这个服务端。它仅仅在开发期间使用
(我们现在忙于搭建 web 框架,而不是 web 服务)
现在,这个服务端可以运行了,浏览器访问http://127.0.0.1:8000/ ,你会看到“欢迎”页面同时会有一个火箭正在发射。
服务端运行了!

修改端口(port)

在默认情况下,runserver 命令服务初始 ip 宽口为 8000.
如果你想修改服务端口的话,使用命令行:

python manage.py runserver 8080
复制代码

如果你想修改 IP ,使用命令行

python manage.py runserver 0:8080
复制代码

解释: 监听所有可用公共 IP; 0是 0.0.0.0 缩写,具体信息参照“runserver”

自动重加载 runserver

2.3.3 创建 Polls(投票) 应用(app)

现在,你的新环境(项目)已经设置成功,现在可以开始工作了。
你写下的每一个应用都由一个 在某个特定环境下的Python 包组成。Django生来可以为一个 APP 自动生成基本的目录结构,所以你可以专注于写代码,而不是创建文件夹了。

  • 项目(project)与应用(APP)的区别

项目与 APP的区别是什么?APP 是一个具有一定功能的web 应用,如 weblog 系统是一个公共记录的数据库,或者是一个小型的投票 APP;project 是针对某个特定网站的汇集了多个配置和app的集合。一个 project 可以有多个 APP,一个 APP 也可以从属于多个项目。

你的 APP只要有 Python 路径就可以运行。在本文档中,我们将创造一个投票应用,这个应用于 manage.py 在统一而目录下,因此,他可以再同等级目录下就可以 import,而不是 mysite 目录下的子习性。
在 manage.py 同一目录下创建 app 的命令行

python manage.py startapp polls
复制代码

这样就创建了一个目录

image.png

image.png

这个目录就是这个 poll APP 应用的结构。

2.3.4 写下你的第一个视图

让我们写下第一个视图:打开 polls/views.py文件,写下以下代码

from dejang.http import HttpResponse
def insex(request):
    return HttpResponse('hello,world. you're ate he polls index.')
复制代码

这个是 Django中最简单的视图了。为了调用这个视图,我们需要将其映射到一个 URL 中;要将其映射到 URL 中,我们,需要配置(URLconf)。
我们在这个投票目录中创建一个叫 url.py 的文件去配置 URL ,然后目录就长这样了。。

image.png

polls/urls.py 写入:

# polls/urls.py 
from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]
复制代码

下一步就是讲这个根URL配置指向polls/urls.py文件。在mysite/urls.py文件中,导入django.urls.include ,然后在 urlpatterns 列表中插入一个 include(),结果如下:

from django.contrib import admin
from django.urls import include, path
urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls), 
 ]
复制代码

include()函数

其中include() 函数涉及到了其他 URL 配置。只要 Django 遇到了include() 函数,无论是URL的那个部分符合到该店,Django都要砍掉这些部分;同时也会发送剩余的字符串到这个被 include 函数修饰的 URL 配置中,从而进行更进一步处理。

include() 函数的中心思想是将”即插即用(plug-and-play)“的 URL 路径变得容易。由于投票 APP 的路径与 URL 配置在一个目录下,他们可以放在以下任何一个目录下“/polls/”、 “/fun_polls/”、/content/polls/”或者其他任意一个目录,这个APP 都可以工作。

  • 何时使用 include()函数:

只要你有其他的 URL 路径,你就应该使用 include()函数,admin.site.urls除外

现在你已经为 index 视图的路径安排好了 URL 配置。以下命令行确保是否工作

python manage.py runsever
复制代码

浏览器访问http://localhost:8000/polls/, 然后你会看到“’hello,world. you’re ate he polls index.” 内容。这就是你定义的 index 视图

  • 无法发现视图?

如果你发现打不开页面,查看 http://localhost:8000/polls/ ,替换掉 http://localhost:8000/.

path()函数

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

  • rout 参数:

rout 是一个字符串,内容是一个 URL 路径。当发起一个请求时,Django从urlpatterns的第一个路径开始,与请求的url比对,并从列表中往下查询,知道找到第一个符合要求的路径。

路径并不关注 GET 或者 POST 参数,也不关注域名(domain name)。例如,请求地址是 https://www. example.com/myapp/ ,URL 配置会去查询 myapp/;而请求地址是 www.example.com/myapp/?page… 时,URL 配置也查询 myapp/。

  • view 参数

当 Django 找到了满足条件的路径,他通过Httprequest对象作为第一个参数调用视图函数,然后作为关键字参数捕捉到这个值。

  • kwars 参数

字典中的任意个关键字参数都可以传递到目标视图中。本文中暂时先不介绍Django 的这个特征

  • name 参数

无论从 Django 的那里,为 URL 命名会让你更明白的去查询它,尤其是模板内部。这个强大的特点,可以让你仅仅x修改(touch)一个文件就在全局范围内修改项目的URL 路径。

当你了解了基本的请求和相应(request and response) 流程,阅读下一章去开始处理数据库。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享