第一个 Django 应用,编写第一个视图

这篇博客介绍了如何开始使用Django,从检查Django版本,创建项目,启动内置服务器,创建名为'polls'的应用,编写第一个视图并映射URL,最终在浏览器中查看结果。整个过程详细说明了Django项目的初始化和基本操作。
摘要由CSDN通过智能技术生成

来自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: &quot;Fira Mono&quot;, Consolas, Menlo, Monaco, &quot;Courier New&quot;, 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

00.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/

参考:编写你的第一个 Django 应用,第 1 部分 | Django 文档 | Django

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值