创建项目

首先创建一个Django项目,在想要创建项目的目录中打开cmd或powershell,运行以下命令:

django-admin startproject mysite

需要注意的是,这里的mysite不可以使用python或django的内部保留字来命名项目。

运行完毕之后会得到如下的项目结构:

mysite/                 # 项目容器
    manage.py           # 可以用各种方式管理Django项目的命令行工具
    mysite/             # 项目目录,它是一个纯python包
        __init__.py     # 空文件,认定该目录是包
        settings.py     # Django配置文件
        urls.py         # Django URL声明
        asgi.py         # 作为项目运行在ASGI兼容的Web服务器上的入口
        wsgi.py         # 作为项目运行在WSGI兼容的Web服务器上的入口

用于开发的简易服务器

确认Django是否呗创建成功,可以切换到外层mysite目录,运行以下命令:

python manage.py runserver

结果:

image-20220110103902542

默认情况下,runserver 命令会将服务设置未本机IP的8000端口,可以设置参数,来配置端口

python manage.py runserver 8080

修改IP同理:

python manage.py runserver 0:8080

0是0.0.0.0的缩写

用于开发的服务器在需要的情况下会对每一次的访问请求重新载入一遍 Python 代码。所以你不需要为了让修改的代码生效而频繁的重新启动服务器。然而,一些动作,比如添加新文件,将不会触发自动重新加载,这时你得自己手动重启服务器。

创建投票应用

在Django中每个应用都是一个python包,并且遵循着相同的约定。

Django自带一个工具,可以用来生成应用的基础结构,这样就可以专心写代码,而不是创建目录。

应用可以存放在python路径中定义的路径。我们在manage.py同级目录下创建投票应用,这样就可以作为顶级模块导入,而非mysite模块的子模块。

manage.py目录下运行以下命令:

python manage.py startapp polls

这将会创建一个polls目录,结构如下:

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

编写视图文件

打开polls/views.py,开始构建视图,代码如下:

from django.http import HttpResponse

def index(request):
    return HttpResponse("This is polls index.")

如果想看到效果,我们需要将一个URL映射到它,为此,我们在polls目录中新建一个urls.py的文件

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

from django.urls import path
from . import views

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

下一步是在根*URLconf文件中指定我们创建的polls.urls模块,在mysite/urls.py文件的urlpatterns列表中插入一个include(),如下:

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

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

include()运训引用其他URLconf。每当Django遇到include时,会阶段与此项匹配的URL部分,并将剩余字符串发送到URLconf以供处理。

通过以下命令验证是否正常工作:

python manage.py runserver

访问浏览器:http://localhost:8000/polls/,结果:

image-20220110112333452

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

  • route:匹配URL的准则(类似正则表达式),当Django响应一个请求时,会从urlpatterns的第一项开始,按顺序一次匹配列表中的项,直到找到匹配的项。这些准则不会匹配GET和POST参数或域名,例如URLconf在处理请求 https://www.example.com/myapp/时,会尝试匹配**myapp/**,请求处理https://www.example.com/myapp/?page=3时,也只会尝试匹配**myapp/**
  • view:当Django找到一个匹配准则时,会调用这个特定的视图函数,并传入第一个HttpRequest对象作为第一个参数,被'捕获'的参数以关键字参数的形式传入。
  • kwargs:任意个关键字参数可以作为一个字典传递给目标视图函数
  • name:为URL取名,能使你在Django的任意地方唯一地引用它,尤其哎模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。