工具

PyCharm Community
django 3.2.10

步骤

1. 创建项目 File + New project

项目名CrawlDemo
在这里插入图片描述

2. 创建一个Django项目

在Terminal 中输入以下代码,自动生成一些代码来创建一个Django项目——一个Django实例的设置集合,包括数据库配置、Django特定的选项和应用程序特定的设置。

...\> django-admin startproject mysite

此处py -m django --version 作用为查看django版本。此处已经安装了django包,不知为何显示找不到模型,不过对后面操作没影响

此处py -m django --version 作用为查看django版本。此处已经安装了django包,不知为何显示找不到模型,不过对后面操作没影响

项目结构

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

These files are:

The outer mysite/ root directory:项目的容器。命名自主选择。
manage.py:一个命令行实用程序,允许你以各种方式与这个Django项目交互。文档
The inner mysite/ directory:项目的实际Python包。它的名字是Python包的名字,你需要用它来导入里面的任何东西(例如mysite.urls)
mysite/init.py: 一个空文件,它告诉Python这个目录应该被认为是一个Python包。文档
mysite/settings.py: 这个Django项目的设置/配置。Django设置会告诉你设置是如何工作的。文档
mysite/urls.py: 这个Django项目的URL声明;django网站的“目录”。文档
mysite/asgi.py:一个为与asgi兼容的web服务器提供服务的入口点。文档
mysite/wsgi.py: 与wsgi兼容的web服务器为您的项目服务的入口点。文档

3. 开发服务器

首先验证服务器是否工作。

//Terminal中输入以下内容
...\> py manage.py runserver

结果显示如下:

暂时忽略关于未应用数据库迁移的警告;我们很快就会处理数据库。

您已经启动了Django开发服务器,这是一个纯用Python编写的轻量级Web服务器。我们在Django中包含了这个功能,这样您就可以快速开发,而无需配置生产服务器(例如Apache),直到您准备好投入生产。
现在是时候注意了:不要在任何类似于生产环境的地方使用该服务器。它只在开发时使用。(我们的业务是制作Web框架,而不是Web服务器。)
现在服务器正在运行,用您的Web浏览器访问http://127.0.0.1:8000/。你会看到一句“恭喜!”一枚火箭起飞了。它工作!
在这里插入图片描述

补充:服务器端口号修改

默认情况下,runserver命令在8000端口的内部IP上启动开发服务器。
如果您想更改服务器的端口,请将其作为命令行参数传递。例如,该命令在8080端口上启动服务器 runserver文档

//Terminal中输入以下内容
...\> py manage.py runserver 8080

自动重新加载runserver

开发服务器根据需要自动为每个请求重新加载Python代码。您不需要重新启动服务器,代码更改就可以生效。但是,有些操作(如添加文件)不会触发重启,因此在这些情况下您必须重启服务器。

4. 创建Polls app

到这一步,环境(项目)已经搭建好了,可以继续下一步了。
在Django中编写的每个应用程序都由一个遵循特定约定的Python包组成。Django提供了一个自动生成应用程序基本目录结构的实用程序。

一个项目project可以包含多个应用程序app,一个应用程序可以存在于多个项目中。

    在本教程中,我们将在与manage.py文件相同的目录下创建我们的poll app,这样它就可以作为自己的顶级模块导入,而不是作为mysite的子模块。
...\> py manage.py startapp polls

补充:polls的结构

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

5. 编写view

5.1 view编写

// polls/views.py文件
from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

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

5.2 创建URLconf

// polls/urls.py文件
from django.urls import path

from . import views

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

下一步是将根URLconf指向轮询url模块。在mysite/urls.py中,为django.urls.include添加一个import,并在urlpatterns列表中插入一个include(),这样你就有:

// 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),
]

include()函数允许引用其他url配置文件。当Django遇到include()时,它会切断匹配的URL的任何部分,并将剩余的字符串发送给包含的URLconf进行进一步处理。

When to use include()
You should always use include() when you include other URL patterns. admin.site.urls is the only exception to this

运行manage.py看程序是否成功。

//Terminal
...\> py manage.py runserver
//或者直接运行 manage.py,设置参数为 runserver

浏览如下网址,出现"Hello,World. You’re at the polls index."说明成功
在这里插入图片描述

补充:path() 函数

The path() function is passed four arguments, two required: route and view, and two optional: kwargs, and name. At this point, it’s worth reviewing what these arguments are for.

对于route参数。route是一个包含URL模式的字符串。当处理一个请求时,Django会从urlpatterns中的第一个模式开始,然后沿着列表向下移动,将请求的URL与每个模式进行比较,直到找到一个匹配的。
模式不搜索GET和POST参数,也不搜索域名。例如,在对https://www.example.com/myapp/的请求中,URLconf将查找myapp/。在对https://www.example.com/myapp/?page=3的请求中,URLconf也会查找myapp/。

参考链接
django文档

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐