pip安装Django
python3 -m pip install Django
安装完成后查看版本
python3 -m django --version
在想要的目录下创建mysite工程
python3 -m django startproject mysite
创建成功后目录结构
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
- 外部
mysite/根目录是项目的容器。它的名字对 Django 来说并不重要;您可以将其重命名为您喜欢的任何名称 manage.py:一个命令行实用程序,可让您以各种方式与此 Django 项目进行交互。你可以在 django-admin 和 manage.py 中阅读所有详细信息manage.py。- 内部
mysite/目录是项目的实际 Python 包。它的名称是用于导入其中的任何内容的 Python 包名称(例如)。mysite.urls mysite/__init__.py:一个空文件,告诉 Python 此目录应被视为 Python 包。如果您是 Python 初学者,请在官方 Python 文档中阅读有关包的更多信息。mysite/settings.py:此 Django 项目的设置/配置。Django 设置将告诉你所有关于设置如何工作的信息mysite/urls.py:此 Django 项目的 URL 声明;你的 Django 驱动的站点的“目录”。您可以在 URL 调度程序中阅读有关 URL 的更多信息。mysite/asgi.py:ASGI 兼容 Web 服务器的入口点,用于为您的项目提供服务。有关详细信息,请参阅如何使用 ASGI 进行部署。mysite/wsgi.py:WSGI 兼容 Web 服务器的入口点,用于为您的项目提供服务。有关更多详细信息,请参阅如何使用 WSGI 进行部署。
开发服务器
验证Django 项目是否有效。切换到外部 mysite 目录(如果尚未打开),然后运行以下命令:
python3 manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
January 16, 2024 - 15:50:53
Django version 5.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
暂时忽略有关未应用数据库迁移的警告;我们很快就会处理数据库。
-
现在我们启动了 Django 开发服务器,这是一个纯用 Python 编写的轻量级 Web 服务器。我们已经将它包含在 Django 中,因此您可以快速开发东西,而无需处理配置生产服务器(例如 Apache)直到您准备好投入生产。
-
不要在类似于生产环境的任何环境中使用此服务器。它仅供在开发时使用。
-
现在服务器正在运行,用浏览器访问 http://127.0.0.1:8000/。你会看到如下页面
更改端口
默认情况下,该 runserver 命令在端口 8000 的内部 IP 上启动开发服务器。
如果要更改服务器的端口,请将其作为命令行参数传递。例如,以下命令在端口 8080 上启动服务器:
$ python3 manage.py runserver 8080
如果要更改服务器的 IP,请将其与端口一起传递。例如,要侦听所有可用的公共 IP(如果您正在运行 Vagrant 或想要在网络上的其他计算机上展示您的工作,这将非常有用),请使用:
$ python3 manage.py runserver 0.0.0.0:8000
可以在 runserver 参考中找到开发服务器的完整文档。
自动重新加载 runserver
开发服务器会根据需要为每个请求自动重新加载 Python 代码。无需重新启动服务器即可使代码更改生效。但是,某些操作(如添加文件)不会触发重新启动,因此在这些情况下必须重新启动服务器。
创建投票应用
您的应用可以位于 Python 路径上的任何位置。在本教程中,我们将在与 manage.py 文件相同的目录中创建投票应用程序,以便可以将其导入为自己的顶级模块,而不是 mysite 的子模块。
若要创建应用,请确保位于同一目录中, manage.py 然后键入以下命令:
python3 manage.py startapp polls
这将创建一个目录 polls ,其布局如下:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
编写你的第一个视图
让我们编写第一个视图。打开文件 polls/views.py 并将以下 Python 代码放入其中
polls/views.py¶
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
这是 Django 中最简单的视图。要调用视图,我们需要将其映射到 URL - 为此,我们需要一个 URLconf。
要在 polls 目录中创建 URLconf,创建一个名为 urls.py .您的应用目录现在应如下所示:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
在 polls/urls.py 文件中包括以下代码:
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
]
下一步是将根 URLconf 指向 polls.urls 模块。在mysite/urls.py中 ,添加一个 导入 django.urls.include 并在 urlpatterns 列表中插入一个 include() ,如下:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path("polls/", include("polls.urls")),
path("admin/", admin.site.urls),
]
该 include() 函数允许引用其他 URLconf。每当 Django 遇到 include() 时,它都会砍掉 URL 的任何部分,并将剩余的字符串发送到包含的 URLconf 进行进一步处理。
背后的 include() 使即插即用 URL 变得容易。由于polls位于自己的 URLconf ( polls/urls.py ) 中,因此它们可以放置在“/polls/”、“/fun_polls/”、“/content/polls/”或任何其他路径根目录下,并且应用程序仍然可以工作。
在包含其他 URL 模式时,应始终使用 include() 。 admin.site.urls 例外。
现在,您已将 index 视图连接到 URLconf 中。使用以下命令验证它是否正常工作
python3 manage.py runserver
在浏览器中转到 http://localhost:8000/polls/ 您应该会看到文本Helloworld.You're at the polls index,这是您在视图中 index 定义的。
如果您在此处收到错误页面,请检查您要 http://localhost:8000/polls/ 而不是 http://localhost:8000/
path() 参数: route¶ (必须)
route 是包含 URL 模式的字符串。在处理请求时,Django 从第一个模式开始 urlpatterns ,然后沿着列表向下走,将请求的 URL 与每个模式进行比较,直到找到一个匹配的模式。
模式不搜索 GET 和 POST 参数,也不搜索域名。例如,在https://www.example.com/myapp/ 请求中,URLconf 将查找 myapp/
在https://www.example.com/myapp/?page=3 请求中,URLconf 还将查找 myapp/ .
path() 参数: view¶ (必须)
当 Django 找到一个匹配的模式时,它会调用指定的视图函数,将对象 HttpRequest 作为第一个参数,从路由中捕获的任何“捕获”值作为关键字参数。我们稍后会举一个例子。
path() 参数: kwargs¶ (可选)
可以在字典中将任意关键字参数传递到目标视图。我们不会在本教程中使用 Django 的这个功能。
path() 参数: name¶ (可选)
命名你的 URL 可以让你从 Django 的其他地方明确地引用它,尤其是从模板中。这个强大的功能允许您对项目的 URL 模式进行全局更改,同时只接触单个文件。