reference/docs/djiango.md
2022-11-01 21:22:20 +08:00

7.4 KiB
Raw Blame History

Django 备忘清单

Django 是 Python 的一款 Web 框架

入门

准备环境

$ python --version
# Python 3.9.2
$ pip --version
# pip 20.2.3 from c:\python39\lib\site-packages\pip (python 3.9)

如果你没有安装 PIP你可以从这个页面下载并安装它https://pypi.org/project/pip/

入门

  • 创建虚拟环境
    $ py -m venv myproject # Windows
    $ python -m venv myproject # Unix/MacOS
    
  • 其中包含子文件夹和文件,如下所示
    myproject
     ├┈Include
     ├┈Lib
     ├┈Scripts
     ╰┈pyvenv.cfg
    
  • 以下命令来激活环境
    # Windows:
    myproject\Scripts\activate.bat
    # Unix/MacOS:
    source myproject/bin/activate
    
  • 提示符中看到以下结果:
    # Windows:
    (myproject) C:\Users\Your Name>
    # Unix/MacOS:
    (myproject) ... $
    
  • 安装 Django
    # Windows:
    (myproject) C:\Users\Name>py -m pip install Django
    # Unix/MacOS:
    (myproject) ... $ python -m pip install Django
    

创建项目

$ django-admin startproject myworld

创建了一个 myworld 文件夹,内容如下:

myworld
  ├┈ manage.py
  ╰┈ myworld/
     ├┈ __init__.py
     ├┈ asgi.py
     ├┈ settings.py
     ├┈ urls.py
     ╰┈ wsgi.py

运行 Django 项目

$ py manage.py runserver     # Windows
$ python manage.py runserver # Unix/MacOS

打开一个新的浏览器窗口并在地址栏中输入 127.0.0.1:8000

检查 Django 版本

(myproject) C:\Users\Your Name>django-admin --version
# 4.0.3

创建应用

$ py manage.py startapp members

项目中创建了一个名为 members 的文件夹,内容如下:

myworld
  ├┈ manage.py
  ├┈ myworld/
  ╰┈ members/
     ├┈ migrations/
     ┆  ╰┈ __init__.py
     ├┈ __init__.py
     ├┈ admin.py
     ├┈ apps.py
     ├┈ models.py
     ├┈ tests.py
     ╰┈ views.py

首先,看一下名为 views.py 的文件。这是我们收集发送回正确响应所需的信息的地方。

应用目录介绍

  • Django 接收 URL检查 urls.py 文件,并调用与 URL 匹配的视图。
  • 位于 views.py 中的视图检查相关模型。
  • 模型是从 models.py 文件中导入的。
  • 然后视图将数据发送到模板文件夹中的指定模板。
  • 模板包含 HTMLDjango 标记,并使用数据将完成的 HTML 内容返回给浏览器

视图

Django 视图是接受 http 请求并返回 http 响应的 Python 函数,就像 HTML 文档一样。

使用 Django 的网页充满了不同任务和任务的视图。

视图通常放在一个名为 views.py 的文件中,该文件位于应用程序的文件夹中。

您的 members 文件夹中有一个 views.py,如下所示:

from django.shortcuts import render

# Create your views here.

找到它并打开它,并将内容替换为:

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello world!")

这是一个关于如何将响应发送回浏览器的简单示例。

但是我们如何执行视图呢? 好吧,我们必须通过 URL 调用视图。

URLs

在与 views.py 文件相同的文件夹中创建一个名为 urls.py 的文件,并在其中输入以下代码:

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]

刚刚创建的 urls.py 文件是特定于成员应用程序的。我们还必须在根目录 myworld 中进行一些路由。

myworld 文件夹中有一个名为 urls.py 的文件,打开该文件并在 import 语句中添加 include 模块,并在列表中添加一个 path() 函数。文件将如下所示:

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

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

如果服务器未运行,请导航到 /myworld 文件夹并在命令提示符下执行此命令:

$ py manage.py runserver

在浏览器窗口的地址栏中输入 127.0.0.1:8000/members/

模板

members 文件夹中创建一个 templates 文件夹,并创建一个名为 myfirst.htmlHTML 文件。文件结构应该是这样的:

myworld
 ├┈ manage.py
 ├┈ myworld/
 ╰┈ members/
    ╰┈ templates/
       ╰┈ myfirst.html

打开 HTML 文件并插入以下内容:

<!DOCTYPE html>
<html>
<body>
  <h1>Hello World!</h1>
  <p>欢迎来到我的第一个 Django 项目!</p>
</body>
</html>

修改视图 members/views.py

from django.http import HttpResponse
from django.template import loader

def index(request):
  template = loader.get_template('myfirst.html')
  return HttpResponse(template.render())

更改设置

为了能够处理比“Hello World”更复杂的东西我们必须告诉 Django 一个新的应用程序已创建

这是在 myworld 文件夹的 myworld/settings.py 文件中完成的。查找 INSTALLED_APPS[] 列表并添加成员应用程序,如下所示:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'members.apps.MembersConfig'
]

然后运行这个命令:

$ py manage.py migrate

通过导航到 /myworld 文件夹启动服务器并执行以下命令:

$ py manage.py runserver

在浏览器窗口的地址栏中输入 127.0.0.1:8000/members/

创建表(模型)

/members/ 文件夹中,打开 models.py 文件。要在我们的数据库中添加成员表,首先创建一个成员类,并描述其中的表字段:

from django.db import models

class Members(models.Model):
  firstname = models.CharField(max_length=255)
  lastname = models.CharField(max_length=255)

然后导航到 /myworld/ 文件夹并运行以下命令:

$ py manage.py makemigrations members
# Migrations for 'members':
#   members\migrations\0001_initial.py
#     - Create model Members

创建一个包含任何新更改的文件并将该文件存储在 /migrations/ 文件夹中。下次运行 py manage.py migrateDjango 将根据迁移文件夹中新文件的内容创建并执行一条 SQL 语句。运行迁移命令:

$ py manage.py migrate

从模型创建的 SQL 语句是:

CREATE TABLE "members_members" (
  "id" INT NOT NULL PRIMARY KEY AUTOINCREMENT,
  "firstname" varchar(255) NOT NULL,
  "lastname" varchar(255) NOT NULL
);

另见