编写你的第一个Django应用程序,第1部分¶
1.django版本
$ python -m django --version
2.创建项目
$ django-admin startproject mysite
创建如下:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
这些文件是:
- 外部
mysite/
根目录只是项目的容器。它的名字对Django来说无关紧要; 你可以将它重命名为你喜欢的任何东西。 manage.py
:一个命令行实用程序,允许您以各种方式与此Django项目进行交互。您可以manage.py
在django-admin和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/wsgi.py
:与WSGI兼容的Web服务器的入口点,用于为您的项目提供服务。有关更多详细信息,请参阅如何使用WSGI进行部署。
3.运行
$ python manage.py runserver
改变端口
默认情况下,该runserver
命令在端口8000的内部IP上启动开发服务器。
如果要更改服务器的端口,请将其作为命令行参数传递。例如,此命令在端口8080上启动服务器:
$ python manage.py runserver 8080
如果要更改服务器的IP,请将其与端口一起传递。例如,要监听所有可用的公共IP(如果您正在运行Vagrant或想要在网络上的其他计算机上展示您的工作,这很有用),请使用:
$ python manage.py runserver 0:8000
0是0.0.0.0的快捷方式。可以在runserver
参考中找到开发服务器的完整文档。
自动重装 runserver
开发服务器根据需要自动为每个请求重新加载Python代码。您无需重新启动服务器即可使代码更改生效。但是,某些操作(如添加文件)不会触发重新启动,因此在这些情况下您必须重新启动服务器。
$ python manage.py startapp polls
那将创建一个目录polls
,其布局如下:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
5.写第一个视图view
在该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
并include()
在urlpatterns
列表中插入 ,所以你有:
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变得容易。由于民意调查位于他们自己的URLconf(polls/urls.py
)中,因此可以将它们放在“/ polls /”下,或“/ fun_polls /”下,或“/ content / polls /”下,或任何其他路径根目录下,并且应用仍会工作。
什么时候用 include()
include()
当您包含其他URL模式时,应始终使用。 admin.site.urls
是唯一的例外。
您现在已将index
视图连接到URLconf。让我们验证它是否正常工作,运行以下命令:
$ python manage.py runserver
在浏览器中转到http:// localhost:8000 / polls /,您应该看到文本“ Hello,world。你在民意调查指数。“,您在index
视图中定义的 。
该path()
函数传递了四个参数,两个必需: route
和view
,以及两个可选:kwargs
,和name
。在这一点上,值得回顾一下这些论点的用途。
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
对象作为第一个参数,并且路由中的任何“捕获”值作为关键字参数。我们稍后会给出一个例子。