来自Django官方.png
检查Django版本
假定你已经阅读了 安装 Django。你可以在命令提示行输入命令(macOS/liunx)
python -m django --version
如果这行命令输出了一个版本号,证明你已经安装了此版本的 Django;如果你得到的是一个“No module named django”的错误提示,则表明你还未安装。
这里使用的Django 2.1 ,它支持 Python 3.5 和后续版本。如果你正在使用一个较老版本的 Python,在 我应该使用哪个版本的 Python 来配合 Django? 查找一个合适的 Django 版本。
创建项目
打开命令行,cd 到一个你想放置你代码的目录,然后运行以下命令(macOS/liunx):
django-admin startproject mysite
这行代码将会在当前目录下创建一个 mysite
目录。如果命令失败了,查看 运行django-admin
时遇到的问题,可能能给你提供帮助。
让我们看看 startproject
创建了些什么:
mysite/ # 根目录只是你项目的容器, Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。
manage.py #一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 [django-admin and manage.py](https://docs.djangoproject.com/zh-hans/2.1/ref/django-admin/) 获取所有 `manage.py` 的细节。
mysite/ #目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls).
__init__.py # 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。而不是一个普通文件夹
settings.py # Django 项目的配置文件。如果你想知道这个文件是如何工作的,请查看 [Django settings](https://docs.djangoproject.com/zh-hans/2.1/topics/settings/) 了解细节。
urls.py # Django 项目的 URL 声明,就像你网站的“目录”。阅读 [URL调度器](https://docs.djangoproject.com/zh-hans/2.1/topics/http/urls/) 文档来获取更多关于 URL 的内容。
wsgi.py # 作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。阅读 [如何使用 WSGI 进行部署](https://docs.djangoproject.com/zh-hans/2.1/howto/deployment/wsgi/) 了解更多细节。
启动 Django 自带的用于开发的简易服务器
让我们来确认一下你的 Django 项目是否真的创建成功了。请切换到 mysite 目录(项目根目录),然后运行下面的命令(macOS/liunx):
python manage.py runserver
你应该会看到如下输出:
<pre class="literal-block" style="font-family: "Fira Mono", Consolas, Menlo, Monaco, "Courier New", Courier, monospace; font-size: 14px; white-space: pre-wrap; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures; text-rendering: optimizespeed; color: rgb(12, 75, 51); border: 1px solid rgb(234, 234, 234); background: rgb(248, 248, 248); overflow: auto; border-radius: 4px; margin: 25px 0px; padding: 10px 20px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">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.
三月 30, 2019 - 15:50:53
Django version 2.1, using settings 'mysite.settings'
Starting development server at [http://127.0.0.1:8000/](http://127.0.0.1:8000/)
Quit the server with CONTROL-C.</pre>
刚刚启动的是 Django 内置的用于开发的简易服务器,它是一个用纯 Python 写的轻量级的 Web 服务器。因为你不需要进行配置生产级别的服务器(比如 Apache)方面的工作。
现在是个提醒你的好时机:千万不要 将这个服务器用于和生产环境相关的任何地方。这个服务器只是为了开发而设计的。(我们在 Web 框架方面是专家,在 Web 服务器方面并不是。)
现在,服务器正在运行,浏览器访问 https://127.0.0.1:8000/。你将会看到一个“祝贺”页面,随着一只火箭发射,服务器已经运行了。
停止服务
在刚才的命令窗口按:control+c
更换端口
默认情况下,runserver
命令会将服务器设置为监听本机内部 IP 的 8000 端口。
如果你想更换服务器的监听端口,请使用命令行参数。举个例子,下面的命令会使服务器监听 8080 端口(macOS/liunx):
python manage.py runserver 8080
如果你想要修改服务器监听的IP,在端口之前输入新的ip。比如,为了监听所有服务器的公开IP(你想要向网络上的其它电脑展示你的成果时很有用),使用命令(macOS/liunx):
python manage.py runserver 0:8000
0 是 0.0.0.0 的简写。完整的关于开发服务器的文档可以在 :djamdin:runserver
参考文档中找到。
注意:
如果127.0.0.1:8000 能访问,而用本机ip访问不了,并且错误信息提示:Invalid HTTP_HOST header: '10.177.15.139:8080'. You may need to add '10.177.15.139' to ALLOWED_HOSTS.
解决方案:
将setting.py 文件的ALLOWED_HOSTS
字段的值修改为 ALLOWED_HOSTS = ['*']
创建投票应用
现在你的开发环境——这个“项目” ——已经配置好了,你可以开始干活了。
在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。
项目 VS 应用
应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者简单的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。(我把它理解成类与方法的概念)
请确定你现在处于 mysite 目录中,我们将在你的 manage.py 同级目录下创建投票应用。然后运行这行命令来创建一个应用(macOS/liunx):
python manage.py startapp polls
这将会创建一个 polls 目录,它的目录结构大致如下:
mysite/ # 项目根目录,上面介绍过,这里不做介绍
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
这个目录结构包括了投票应用的全部内容。
编写第一个视图
让我们开始编写第一个视图吧。打开 polls/views.py,把下面这些 Python 代码输入进去:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
这是 Django 中最简单的视图。如果想看见效果,我们需要将一个 URL 映射到它——这就是我们需要 URLconf 的原因了。
为了创建 ,请在 polls 目录里新建一个 urls.py 文件。你的应用目录现在看起来应该是这样:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py # 心脏的URLconf 用于 URL 映射
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 文件的 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()
允许引用其它 URLconfs。当用户请求:http://127.0.0.1:8000/index/ 时,会先到根目录到urlpatterns中进行正则匹配,每当 Django 遇到include()时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到指定目录到 URLconf以供进一步处理。
现在可以验证是否正常工作,运行下面的命令:
python manage.py runserver
用你的浏览器访问 http://localhost:8000/polls/,你应该能够看见 "Hello, world. You're at the polls index." ,这是你在 index
视图中定义的。
注意:
如果你在这里得到了一个错误页面,检查一下你是不是正访问着http://localhost:8000/polls/ 而不应该是 http://localhost:8000/。