[part 1] 第一个 Django 应用

概述

本项目依据官网指南概述而成,Django 版本2.2.3

  • 前台展示,访问者查看民意调查并在其中投票
  • 后台管理,允许您对调查结果进行增删改

创建项目

使用框架命令工具 django-admin 创建项目目录骨架

    pip install -U django
    python -m django --version

    django-admin startproject mysite
  • 项目结构

外层 mysite项目目录,内层 mysite 应用目录,manage.py 管理 Django 命令行交互

  mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
  • 启动web服务

进入项目目录,以下三条命令皆可以开启web服务
第一条命令,默认web服务访问的端口是8000
第二条则指定是更改端口为8080,通常是在端口冲突的情况下使用
第三条意味着是可以通过局域网其他终端访问本机的web服务,其0 是 0.0.0.0 广播

    python manage.py runserver
    python manage.py runserver 8080
    python manage.py runserver 0:8000

创建应用

  • 项目(站点) vs 应用
    • web应用有数据库存储,weblog系统
    • 项目是一个包含特定站点应用和配置的集合
    • 一个项目包含多个应用,一个应用可以在多个项目中

换句话而言,由 django-admin 生成是项目(或站点),而由 python manage.py 创建为应用

    python manage.py startapp 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("Hello, world. You're at the polls index.")

配置UrlConf

  • 将应用的 urlconf 配置指向项目根 urlconf ,以便 Django 通过配置路由可以找到视图
  • polls 文件夹下新增 urls 配置文件 polls/urls.py 文件 ,django.urls.include 函数导入 url 配置
# polls/urls.py
from django.urls import path
from . import views

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

# mysite/urls.py
from django.contrib import admin
from django.urls import include, path

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

重新启用web服务python manage.py runserver
访问 http://localhost:8000/polls/ 可见自定义视图

附录

  • django.urls.include 函数允许引入外部url配置,将 path 方法正则匹配到的url发送到映射处理器
  • _path(route, view, kwargs=None, name=None, Pattern=None)
    • 该方法是 django.urls.path 原型
    • route 一个包含 url 正则的字符串, Django 会从 urlpatterns 列表中依次匹配
      • 需要注意的是它并不关心 http 谓词 GET/POST
    • view 若匹配正则,会调用一个视图函数,该视图函数默认的第一个参数是一个 HttpRequest 对象
    • path() argument: name 命名参数,方便在其他的地方引用,类似于其他同类框架中的命名路由

进入part 2学习

源码

第一个Django应用程序

pardon110
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!