美文网首页
第一个 Django 应用,编写第一个视图

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

作者: 别动我名字呀 | 来源:发表于2019-04-27 14:29 被阅读0次
    来自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

    相关文章

      网友评论

          本文标题:第一个 Django 应用,编写第一个视图

          本文链接:https://www.haomeiwen.com/subject/dxncnqtx.html