工具
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包,不知为何显示找不到模型,不过对后面操作没影响
项目结构
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文档