美文网首页
Django初学者入门指南1-初识(译&改)

Django初学者入门指南1-初识(译&改)

作者: 心甘情愿_Root | 来源:发表于2020-09-22 16:19 被阅读0次

    Django初学者入门指南1-初识(译&改)

    Django初学者入门指南2-基础知识(译&改)

    Django初学者入门指南3-高级概念(译&改)

    Django初学者入门指南4-登录认证(译&改)

    Django初学者入门指南5-存储数据(译&改)

    Django初学者入门指南6-基于类的页面(译&改)

    Django初学者入门指南7-部署发布(译&改)

    >>原文地址 By Vitor Freitas

    简介

    欢迎

    今天我要开始一个关于Django基础知识的新系列教程。这是一个完整的初学者指南开始学习Django。材料分为七个部分。我们将详细探讨所有的基本概念,从安装、开发环境的准备、模型、视图、模板、url到更高级的主题,如迁移、测试和部署。

    为了做一个容易遵循,信息丰富,阅读乐趣的教程,我想做些改变。于是我想出了一个主意,就是沿着文本创作一些漫画来说明一些概念和场景。希望你们会喜欢!

    在我们开始之前…

    当我在一所大学担任代课教授时,我曾在计算机科学课程中为新来的学生讲授web开发学科的介绍。我总是用孔子的这句话开始新的课程:实践出真知.

    实践出真知

    为什么要学习Django?

    Django是一个用Python编写的Web框架。Web框架是一种支持动态网站、应用程序和服务开发的软件。它提供了一组工具和功能来解决与Web开发相关的许多常见问题,例如安全特性、数据库访问、会话、模板处理、URL路由、国际化、本地化等等。

    使用诸如Django这样的Web框架,使我们能够以标准化的方式非常快速地开发安全可靠的Web应用程序,而不必重新设计轮子。

    那么,Django有什么特别之处?对于初学者来说,它是一个python的web框架,这意味着您可以从广泛的开源库中获益。Python包索引存储库托管了超过116K个包(根据2017年9月6日)。如果你需要解决一个特定的问题,很可能有人已经为它实现了一个库。

    Django是用Python编写的最流行的Web框架之一。它绝对是目前最全的,提供了一系列现成的功能,例如用于开发和测试的独立Web服务器、缓存、中间件系统、ORM、模板引擎、表单处理、与Python的单元测试工具的接口。Django还附带了一系列额外的功能,提供了内置的应用程序,如身份验证系统、带有自动生成的CRUD操作页面的管理界面、生成联合提要(RSS/Atom)、站点地图。甚至还有一个地理信息系统(GIS)框架构建在Django中。

    Django的开发得到了Django软件基金会的支持,并得到了JetBrains和Instagram等公司的赞助。Django也已经存在了一段时间了。经过12年多的打磨,已经是一个成熟、可靠和安全的Web框架。

    都有哪些大厂在使用Django?

    你可以通过已知的在使用Django的大厂产品,去了解Django能够做些什么,有些什么功能。比如: Instagram, Disqus, Mozilla, Bitbucket, Last.fm, National Geographic.

    如果还想了解更多的话,可以参考 Django Sites 数据库, 他们详细列举了超过5000家使用Django的网站。

    顺便说一句,去年,在Django Under the Hood 2016大会上,Django核心开发者Carl Meyer和Instagram员工就Instagram如何大规模使用Django以及它如何支持他们的增长发表了演讲。这个有趣的谈话耗时一个小时,如果你有兴趣的话可以去听一听。


    安装

    我们需要做的第一件事是在我们的机器上安装一些程序,以便能够开始玩Django。基本设置包括安装Python、Virtualenv和Django。

    需要安装的软件

    你可以不使用虚拟环境,但强烈建议使用。特别是如果你刚刚开始,最好还是使用虚拟环境进行开发测试。

    使用Django开发网站或Web项目时,必须安装外部库来支持开发是非常常见的。使用虚拟环境可以保证开发的每个项目都有其独立的环境,依赖关系不会冲突。它还允许您在本地机器项目中维护运行在不同Django版本上的项目。

    而且使用虚拟环境非常简单。

    安装 Python 3.6.2

    我们要做的第一件事是安装最新的Python的Release版本(我写这篇教程的时候是python3.6.2)。如果有更新的版本,那就使用最新吧,接下来的步骤应该差不多。

    最好的方式是通过Homebrew进行安装,如果你的电脑还未安装Homebrew,通过终端执行下面的命令进行安装:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    安装时间可能有点长,但它会自动帮你处理好。当看到下面的信息时,就代表安装完成了:

    ==> Installation successful!
    
    ==> Homebrew has enabled anonymous aggregate user behaviour analytics.
    Read the analytics documentation (and how to opt-out) here:
      https://docs.brew.sh/Analytics.html
    
    ==> Next steps:
    - Run `brew help` to get started
    - Further documentation:
        https://docs.brew.sh
    

    我们将使用python3,因为最重要的Python库已经被移植到python3上,而且下一个主要的Django版本(2.x)将不再支持python2,所以python3是最好的选择。在终端中执行下面的命令:

    brew install python3
    

    安装成功后尝试执行一下以下命令:

    python3 --version
    Python 3.6.2
    

    很好,Python已经启动并运行了。下一步:虚拟环境!

    安装 Virtualenv

    下一步,我们将使用pip(一个管理和安装Python包的工具)来安装virtualenv。pip本身是python2.x版本的包管理工具,在python 3.x以上版本中,我们要使用pip3来执行下面的命令:

    sudo pip3 install virtualenv
    

    到目前为止,我们执行的安装是全系统的。从现在起,我们安装的一切,包括Django本身,都将安装在虚拟环境中。

    可以这样想:对于您启动的每个Django项目,您将首先为它创建一个虚拟环境。就像每个Django项目都有一个沙盒。在这个沙盒里你可以任意读写文件,安装软件包,卸载软件包而不会影响到沙盒外。

    我喜欢在我的个人电脑上创建一个名为Development的文件夹。然后,我用它来组织我所有的项目和网站。如果你愿意的话可以按照下面的步骤创建目录,你也可以按照你自己的习惯管理项目文件。

    通常,我首先在我的开发文件夹中创建一个项目名称的新文件夹。因为这将是我们的第一个项目,我们不需要选择一个花哨的名字或任何东西。现在,我们可以称之为myproject。

    mkdir myproject
    cd myproject
    

    这个文件夹是一个更高级别的目录,它将存储与Django项目相关的所有文件和东西,包括它的虚拟环境。

    因此,让我们从创建我们的第一个虚拟环境并安装Django开始。

    在myproject文件夹中执行下面的命令:

    virtualenv venv -p python3
    

    我们的虚拟环境已经创建好了。注意在开始使用之前,需要我们主动激活虚拟环境:

    source venv/bin/activate
    

    当虚拟环境被激活后,你会看到(venv)这样的关键字:

    让我们试着弄清楚这里发生了什么。我们创建了一个名为venv的特殊文件夹。它在这个文件夹中包含Python的副本。激活venv环境之后,当我们运行python命令时,它将使用存储在venv中的本地副本,而不是我们先前安装的另一个副本。

    另一个重要的事情是确认pip程序也已经安装好了,当我们使用它来安装Python包(比如Django)时,将被安装在venv环境中。

    如果需要退出venv环境,执行下面的命令即可:

    deactivate
    

    这里不需要执行devactive,我们继续在venv环境里安装Django.

    安装 Django

    venv激活的情况下,直接执行下面的命令来安装Django:

    pip install django
    

    安装完成,我们可以开始使用Django啦!

    安装完成,让我们开始干活

    创建一个新项目

    执行下面的命令来创建新项目,项目名称自定义,我们这里用myproject:

    django-admin startproject myproject
    

    Django内置安装了命令行工具django-admin,我们可以直接使用

    在我们运行上面的命令之后,它将为Django项目生成基本文件夹结构。

    现在,我们的myproject目录如下所示:

    myproject/                  <-- 更高一级的文件夹
     |-- myproject/             <-- django 项目文件夹
     |    |-- myproject/
     |    |    |-- __init__.py
     |    |    |-- settings.py
     |    |    |-- urls.py
     |    |    |-- wsgi.py
     |    +-- manage.py
     +-- venv/                  <-- 虚拟环境的文件夹
    

    我们最初的项目结构由五个文件组成:

    • manage.py:使用django-admin工具的快捷方式。它用于运行与我们的项目相关的管理命令。我们将使用它来运行开发服务器、运行测试、创建迁移等等。

    • init.py:这个空文件告诉Python这个文件夹是一个Python包。

    • settings.py:此文件包含项目的所有配置。我们会一直引用这个文件!

    • urls.py:此文件负责映射项目中的路由和路径。例如,如果要在URL/about/中显示某些内容,则必须先将其映射到此处。

    • wsgi.py:此文件是用于部署的简单网关接口,现在暂时还不会用到,后面部署时会涉及到。

    Django可以非常简便地启动本地web服务器。它在开发过程中非常方便,因此我们不必安装任何其他东西来在本地运行项目。我们可以通过执行以下命令进行测试:

    python manage.py runserver
    

    现在我们先忽略迁移报错信息(这个稍后讨论)。在Web浏览器中打开以下URL:http://127.0.0.1:8000,您应该看到以下页面:

    Welcome to Django

    Django 应用(Apps)

    在Django框架中,我们需要注意下面这两个重要的概念:

    • app: 是一个Web应用程序。一个应用程序通常由一组模型(数据库表)、视图、模板、测试组成。
    • project:是配置和应用程序的集合。一个项目可以由多个应用程序或单个应用程序组成。

    需要注意的是,没有项目就不能运行Django应用程序。像blog这样的简单网站可以完全在一个应用程序中编写,例如可以命名为blog或weblog。

    程序设计

    这是一种源代码的分类和管理方法。初学者在开始的时候判断什么是应用程序、如何组织代码并不是很容易。我们先跳过这个!首先让我们熟悉一下Django的API和基本原理。

    好吧!为了说明这一点,让我们创建一个简单的Web论坛。要创建我们的第一个应用程序,请转到manage.py文件是并执行以下命令:

    django-admin startapp boards
    

    注意这一次我们使用的命令是startapp。它会为我们创建应用程序的目录,现在我们的目录结构应该是如下:

    myproject/
     |-- myproject/
     |    |-- boards/                <-- 新建的Django应用程序!
     |    |    |-- migrations/
     |    |    |    +-- __init__.py
     |    |    |-- __init__.py
     |    |    |-- admin.py
     |    |    |-- apps.py
     |    |    |-- models.py
     |    |    |-- tests.py
     |    |    +-- views.py
     |    |-- myproject/
     |    |    |-- __init__.py
     |    |    |-- settings.py
     |    |    |-- urls.py
     |    |    |-- wsgi.py
     |    +-- manage.py
     +-- venv/
    

    我们先来看看每一个文件的作用:

    • migrations/: 在这里,Django存储一些文件来跟踪您在models.py文件,以便保存数据库和models.py同步。
    • admin.py: 这是一个名为Django Admin的内置Django应用程序的配置文件.
    • apps.py: 这是应用程序本身的配置文件。
    • models.py: 这里是我们定义Web应用程序实体的地方。模型由Django自动转换成数据库表
    • tests.py: 此文件用于编写应用程序的单元测试。
    • views.py: 这是我们处理Web应用程序的请求/响应周期的文件。

    现在我们已经创建了我们的第一个应用程序,让我们配置我们的项目使用它。

    打开settings.py,找到INSTALLED_APPS这个变量:

    settings.py

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    

    从上面可以看出,Django已经安装了6个内置应用程序。它们提供了大多数Web应用程序需要的常见功能,如身份验证、会话、静态文件管理(图像、javascripts、css等)等等。

    我们将在接下来的教程中来探讨这些应用程序。但现在,我们先暂时忽略他们。创建我们的boards应用程序,并添加到INSTALLED_APPS中:

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    
        'boards',
    ]
    

    这里使用的是上面的漫画插图中的正方形和圆形的设计,我们的boards应用程序是黄色的圆形,django.contrib.admindjango.contrib.auth等应用程序就是图中的红色圆形。


    第一个页面 Hello, World!

    让我们创建第一个页面view。我们将在下一篇教程中详细探讨它,现在让我们先尝试一下用Django创建一个新页面的效果。

    打开boards应用程序目录下的views.py并添加如下代码:

    views.py

    from django.http import HttpResponse
    
    def home(request):
        return HttpResponse('Hello, World!')
    

    views.py中的定义的是接收HttpRequest对象并返回HttpResponse对象的Python函数。必须记住的这个流程!让我们先定义一个home并返回一个消息Hello, World!

    接着我们需要告诉Django什么时候去响应这个视图函数。它是由urls.py来实现的,让我们打开这个目录下的urls.py文件:

    <details>
    <summary>原始版本</summary>
    原始的urls.py

    from django.conf.urls import url
    from django.contrib import admin
    
    from boards import views
    
    urlpatterns = [
        url(r'^$', views.home, name='home'),
        url(r'^admin/', admin.site.urls),
    ]
    

    </details>

    修订版本的urls.py

    from django.urls import re_path
    from django.contrib import admin
    
    from boards import views
    
    urlpatterns = [
        re_path(r'^$', views.home, name='home'),
        re_path(r'^admin/', admin.site.urls),
    ]
    

    注意上面我们添加了几行代码:首先从boards中引入了views,python中引入的写法是from boards import views;然后我们在urlpatterns中新增了一行re_path(r'^$', views.home, name='home')

    我们先不讨论这几行代码的作用,这个将在后面的教程中详细探讨。

    在这里,Django通过正则匹配去查询我们的home页面,这里使用的正则是^$,它匹配的是空字符串,对应的路径地址是:http://127.0.0.1:8000。如果需要将首页的URL改为http://127.0.0.1:8000/homepage/,那么正则匹配就应该改为re_path(r'^homepage/$', views.home, name='home')

    让我们试试它的效果。

    python manage.py runserver
    

    在浏览器中我们输入http://127.0.0.1:8000

    Hello, World!

    成功了,你创建了你的第一个页面。


    小结

    这是本系列教程的第一部分。在本教程中,我们学习了如何安装最新的Python版本以及如何设置开发环境。我们还介绍了虚拟环境,并开始了我们的第一个Django项目,并且已经创建了我们的初始应用程序。

    为了让我们保持一致,我在GitHub上提供了源代码。项目的当前状态可以在发布标签v0.1-lw下找到。下面的链接将带您找到正确的位置:github地址

    译者注:为了适配新版本的python3,对部分代码进行了修改,原文可以查看原文地址

    下一节:Django初学者入门指南2-基础知识(译&改)

    相关文章

      网友评论

          本文标题:Django初学者入门指南1-初识(译&改)

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