原文地址:https://simpleisbetterthancomplex.com/series/2017/09/04/a-complete-beginners-guide-to-django-part-1.html

前言

今天我将开始一个关于 Django 基础知识的全新系列教程,这是一个开始学习 Django 的完整入门指南,教程材料一共会被分为七个部分。

我们将从安装、开发环境的准备,模型,视图,模板,URL到更高级的主题(如迁移,测试和部署)中详细探讨所有基本概念。

我想做一些不一样的事情,这是一个容易学习,内容丰富且不失趣味的教程。我的想法是在文章中穿插一些漫画的方式来演示说明相应的概念和场景。我希望大家能够享受这种阅读!

但是在我们开始之前…

当年我在一所大学担任代课教授时,我曾经在计算机科学专业给新来的学生讲授网络开发学科。那时我总是会用下面这个孔夫子的名言开始新的课程:

(译者注:不确定是孔子讲的,但这句话早在中国古代就有所提到,出自荀子《儒效篇》“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之;学至于行之而止矣”)

所以,请动起手来!不要只是阅读教程。我们一起来练习!通过实践和练习你会收获的更多。

为什么要学习Django?

Django是一个用 Python 编写的 Web 框架。Web 框架是一种软件,基于web框架可以开发动态网站,各种应用程序以及服务。它提供了一系列工具和功能,可以解决许多与Web开发相关的常见问题,比如:安全功能,数据库访问,会话,模板处理,URL路由,国际化,本地化,等等。

使用诸如 Django 之类的网络框架,使我们能够以标准化的方式快速开发安全可靠的Web应用程序,而无需重新发明轮子。

那么,Django有什么特别之处呢?对于初学者来说,它是一个Python Web框架,这意味着你可以受益于各种各样的开源库包。python软件包资料库(pypi)拥有超过11.6万个软件包(2017年9月6日的数据)。如果当你想要解决一个特定的问题的时候,可能有人已经为它实现了一个库来供你使用。

Django是用python编写的最流行的web框架之一。它绝对是最完整的,提供了各种各样的开箱即用的功能,比如用于开发和测试的独立Web服务器,缓存,中间件系统,ORM,模板引擎,表单处理,基于Python单元测试的工具接口。

Django还自带内部电池,提供内置应用程序,比如一个认证系统,一个可用于 CRUD(增删改查) 操作并且自动生成页面的后台管理界面,生成订阅文档(RSS/Atom),站点地图等。甚至在django中内建了一个地理信息系统(GIS)框架。

Django的开发得到了Django软件基金会的支持,并且由jetbrains和instagram等公司赞助。

Django现在已经存在了相当长的一段时间了。到现在为止,活跃的项目开发时间已经超过12年,这也证明了它是一个成熟,可靠和安全的网络框架。

谁在使用Django?

知道谁在使用Django是很好的,同时也想一想你可以用它来做些什么。在使用Django的大型网站有:Instagram,Disqus,Mozilla,Bitbucket,Last.fm,国家地理。

想知道更多的示例,你可以到Django Sites数据库中查看,它提供超过五千个Django驱动的网站列表。

顺便说一下,去年在Django 2016年发布会上,Django核心开发人员,Instagram员工 carl meyer,就Instagram如何大规模使用Django以及它如何支持他们的用户增长做过一次分享。这是个一小时的演讲,如果你有兴趣学习了解更多的话,这是一次很有趣的演讲。

安装

我们需要做的第一件事是在我们的电脑上安装一些程序,以便能够开始使用django。基本的设置包括安装PythonVirtualenvDjango

使用虚拟环境不是强制性的,但是我还是强烈建议大家这样做。如果你是一个初学者,那么最好形成一个良好的开端。

当你在用 Django 开发一个网站或者一个Web项目的时候,不得不安装外部库以支持开发是非常常见的事情。使用虚拟环境,你开发的每个项目都会有其独立的环境。这样的话,包之间的依赖关系不会发生冲突。同时也使得你能在不同Django版本上运行的本地机器的项目。

在后面你会看到使用它是非常简单的!

安装 Python 3.6.2

我们想要做的第一件事是安装最新版的Python,那就是Python 3.6.2。至少是在我写这篇教程的时候。如果有更新的版本,请使用新版。接下来的步骤也应该保持大致相同的做法。

我们将使用Python 3,因为大部分主要的Python库已经被移植到python 3,并且下一个主要的django版本(2.x)也将不再支持python 2。所以Python 3是正确的选择。

最好的方法是通过Homebrew安装。 如果你的Mac还没有安装Homebrew的话,在终端中执行下面的命令:

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

如果你没有安装命令行工具(Command Line Tools),Homebrew的安装可能需要稍长一点的时间。但它会帮助你处理好一切,所以不用担心。只需要坐下来等到安装完成即可。

当你看到以下消息时,就代表安装完成了:

==> 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

执行下面的命令来安装Python 3:

brew install python3

由于macOS原本已经安装了python 2,所以在安装python 3之后,你将可以同时使用这两个版本。

需要运行Python 2的话,在终端中通过命令 python 启动。如果想运行Python 3,则使用python3 来启动。

我们可以在终端中测试一下:

python3 --versionPython 3.6.2

很棒,python已经启动并正在运行。下一步:虚拟环境!

安装 Virtualenv

接下来这一步,我们将通过pip(一个管理和安装Python包的工具)来安装Virtualenv

请注意,Homebrew已经为你安装好了pip,在python 3.6.2下的名称为 pip3

在终端中,执行下面的命令:

sudo pip3 install virtualenv

到目前为止,我们执行的安装都是在操作系统环境下运行的。从现在开始,我们安装的所有东西,包括django本身,都将安装在虚拟环境中。

这样想一下:对于你开始的每个Django项目,你首先会为它创建一个虚拟环境。这就像每个Django项目都有一个沙盒。所以你随意运行,安装软件包,卸载软件包而不会破坏任何东西。

我习惯在电脑上创建一个名为Development的文件夹。然后,我用它来组织我所有的项目和网站。但你也可以按照接下来的步骤创建适合你自己的目录。

通常,我首先在Development文件夹中创建一个项目名称的新文件夹。既然这将是我们第一个项目,我们没必要挑选一个独特的名字。现在,我们可以称之为myproject

mkdir myprojectcd myproject

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

所以让我们开始创建我们的第一个虚拟环境并安装django。

myproject文件夹中:

virtualenv venv -p python3

这样我们的虚拟环境就创建好了。在开始使用它之前,我们需要先激活一下环境:

source venv/bin/activate

如果你在命令行前面看到 (venv),就代表激活成功了,就像这样:

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

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

请注意,当我们启用venv时,我们将使用命令python(而不是python3)来调用Python 3.6.2,并且仅使用pip(而不是pip3)来安装软件包。

顺便说一句,要想退出venv环境,运行下面的命令:

deactivate

但是,我们现在先保持激活状态来进行下一步。

安装 Django 1.11.4

很简单,现在我们已经启动了venv,运行以下命令来安装django:

pip install django

现在一切就绪!

启动一个新项目,执行下面的命令来创建一个新的 Django 项目:

django-admin startproject myproject

命令行工具django-admin会在安装Django的时候一起自动安装好。

执行了上面的命令以后,系统会为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自带了一个简单的网络服务器。在开发过程中非常方便,所以我们无需安装任何其他软件即可在本地运行项目。我们可以通过执行命令来测试一下它:

python manage.py runserver

现在,你可以忽略终端中出现的迁移错误;我们将在稍后讨论。

现在在Web浏览器中打开URL:http://127.0.0.1:8000,你应该看到下面的页面:

使用组合键 Control + C来终止开发服务器。

Django 应用

在Django的哲学中,我们有两个重要的概念:

  • app:是一个可以做完成某件事情的Web应用程序。一个应用程序通常由一组models(数据库表)views(视图)templates(模板)tests(测试) 组成。

  • project:是配置和应用程序的集合。一个项目可以由多个应用程序或一个应用程序组成。

请注意,如果没有一个project,你就无法运行Django应用程序。像博客这样的简单网站可以完全在单个应用程序中编写,例如可以将其命名为blogweblog

这是组织源代码的一种方式。现在刚开始,判断什么是或不是应用程序这些还不太重要。包括如何组织代码等。现在不用担心那些问题!首先让我们对Django的API和基础知识进行梳理一遍。

好的!那么,为了方便说明,我们来创建一个简单的网络论坛讨论区。要创建我们的第一个应用程序,请跳转到manage.py文件所在的目录并执行以下命令:

django-admin startapp boards

注意!我们这次使用的命令是startapp

通过这条指令,系统会给我们创建以下目录结构:

myproject/|-- myproject/ |    |-- boards/                <-- 我们新的Django应用(app)! |    |    |-- 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内置的应用程序Django Admin的配置文件。

  • apps.py:这是应用程序本身的配置文件。

  • models.py:这里是我们定义Web应用程序数据实例的地方。models会由Django自动转换为数据库表。

  • tests.py:这个文件用来写当前应用程序的单元测试。

  • views.py:这是我们处理Web应用程序请求(request)/响应(resopnse)周期的文件。

现在我们创建了我们的第一个应用程序,让我们来配置一下项目以便启用这个应用程序。

要做到这一点,打开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应用程序所需的常用功能,如身份验证,会话,静态文件管理(图像,JavaScript,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',  # 译者注:建议和作者一样空一行来区别内置app和自定义的app]

使用前面漫画正方形和圆圈的比喻,黄色的圆圈就是我们的boards应用程序,django.contrib.admin, django.contrib.auth等就是红色的圆圈。

Hello, World!

现在来写我们的第一个视图(view)。我们将在下一篇教程中详细探讨它。但现在,让我们试试看看如何用Django创建一个新页面。

打开boards应用程序中的views.py文件,并添加以下代码:

views.py

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

视图是接收httprequest对象并返回一个httpresponse对象的Python函数。接收 request 作为参数并返回 response 作为结果。这个流程你必须记住!

我们在这里定义了一个简单的视图,命名为home,它只是简单地返回一个信息,一个字符串hello,world!

现在我们必须告诉Django什么时候会调用这个view。这需要在urls.py文件中完成:

urls.py

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

如果你将上面的代码片段与你的urls.py文件进行比较,你会注意到我添加了以下新代码:url(r'^ $',views.home,name ='home')并从我们的应用程序boards中导入了views模块通过from boards import views

和我之前提到的一样,我们将在稍后详细探讨这些概念。

现在,Django使用正则表达式来匹配请求的URL。对于我们的home视图,我使用^$ 正则,它将匹配一个空路径,也就是主页(这个URL:http://127.0.0.1:8000 )。如果我想匹配的URL是 http://127.0.0.1:8000/homepage/ ,那么我的URL正则表达式就会是:url(r'^homepage/$', views.home, name='home')

我们来看看会发生什么:

python manage.py runserver

在一个Web浏览器中,打开 http://127.0.0.1:8000 这个链接:

就是这样!你刚刚创建成功了你的第一个视图


http://www.taodudu.cc/news/show-5518789.html

相关文章:

  • android 漫画加载方案,Android加载长图的多种方案分享
  • 图解 HTTP 的缓存机制 | 实用 HTTP
  • 漫画面试回答kafka为何如此之快|满分
  • 彻底吃透浏览器的缓存机制!
  • picacg本地缓存目录_picacg隐藏模式在哪?picacg怎么进隐藏?
  • 有关于缓存的 判断
  • 分布式之一行代码解决缓存击穿问题
  • 一篇文章教会你Nginx缓存,Be a king of caching
  • redis缓存雪崩、穿透、击穿概念、布隆过滤器小结及解决办法
  • 漫画面试回答kafka为何如此之快
  • Android客户端缓存机制(文字缓存和多媒体文件缓存)
  • LRU缓存实现与原理
  • winform html5桌面,开启新模式WinForm - Jokerpapapa
  • avi和音频合成 ffmpeg_音视频处理工具FFmpeg与Java结合的简单使用
  • java版本区别
  • 教你用Smart Install Maker制作自己的软件安装包 - 视频教程
  • 挣脱Windows的枷锁:MPlayer - linux下的暴风影音
  • 《恐怖丛林生存》肉搏终级攻略
  • 《笨办法学python》第36课——设计和调试
  • 前端基础-CSS伪类选择器和类选择器一起使用
  • CSS复合选择器之链接伪类选择器及总结
  • css选择器类型伪类选择器(详)
  • html引入scss,使用Sass混合宏来声明CSS伪类选择器
  • CSS伪类选择器使用实例
  • CSS 选择器大全 伪类选择器大全
  • css伪类选择器记忆技巧,CSS3 伪类选择器 :nth-child()
  • Css伪类选择器之常见形式、动态伪类篇
  • CSS 伪类选择器 last-child 和 last-of-type 的区别
  • CSS 伪类选择器
  • 【第四篇】CSS选择器之伪类选择器

Python框架Django快速入门相关推荐

  1. Python开发-Django快速入门

    如果你是一位python开发初学者,而且你对Django一无所知,那下面介绍的内容将会是你所需要知道的关于 Django 的知识. 一.快速入门 你是刚学 Python.Django 或是初学编程吗? ...

  2. python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门

    原标题:Python零基础从零开始学习Python十分钟快速入门 学习Python的,都知道Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python是一种动态解释型的 ...

  3. 视频教程-Python框架Djanggo从入门到实战教程(企业级项目实战)-Python

    Python框架Djanggo从入门到实战教程(企业级项目实战) 多年web开发经验,精通HTML.CSS.JavaScript.HTML5.CSS3等Web前端开发技术,技术纯熟,项目经验丰富.授课 ...

  4. 分布式应用框架Akka快速入门

    转自:分布式应用框架Akka快速入门_jmppok的专栏-CSDN博客_akka 本文结合网上一些资料,对他们进行整理,摘选和翻译而成,对Akka进行简要的说明.引用资料在最后列出. 1.什么是Akk ...

  5. Python 股票分析快速入门

    Python 股票分析快速入门 这段时间股市又开始火爆起来了,隐约这透着点大牛市气息,多年不用的股票账户也找回来了.然后就想着用python做下股票分析,尝试制作自己的分析脚本,本篇教程是自己的一些笔 ...

  6. Python七天快速入门——第一天

    Python七天快速入门--第二天 Python七天快速入门--第三天 Python七天快速入门--第四天 上 Python七天快速入门--第四天 下 Python七天快速入门--第五天 Python ...

  7. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表

    • 这是机器未来的第7篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124957520 <Python零基础快速入门 ...

  8. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典

    这是机器未来的第11篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/125038890 <Python零基础快速入门系 ...

  9. 【Python数据科学快速入门系列 | 04】Numpy四则运算、矩阵运算和广播机制的爱恨情仇

    这是机器未来的第43篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/126493989 文章目录 1. 概述 2. 四则运算 ...

最新文章

  1. Java打印车票主要学习Java的比较语句
  2. GDCM:gdcm::Orientation的测试程序
  3. Zepto 与 jQuery 的区别 小结
  4. 【设计模式】加薪非要老总批 --- 职责链模式
  5. mysql备份文件0kb_Oracle 数据文件大小为0kb或者文件丢失恢复
  6. 2020双十一实时大屏_2020拼多多双十一,拼多多双十一活动
  7. mxnet创建新的操作(层)
  8. 2020武大计算机学院研究生补录通知,2020年武汉大学硕士研究生复试录取工作细则汇总...
  9. 计算机算法设计与分析 最大子段和问题
  10. Spring Boot 返回 XML 数据,一分钟搞定!
  11. 编写一个Applet在屏幕上画椭圆,椭圆的大小和位置由鼠标决定
  12. android jni调试打印char阵列
  13. Auto CAD 2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 全版本 附带安装教程+入门到精通视频教程
  14. WIN10 安装Eplan 2.7 没有可激活合适的加密狗 的异常解决办法
  15. vs2019编译的程序在win7环境上运行失败
  16. 注册邮箱验证激活技术
  17. unity渲染篇:烘焙模型贴图
  18. 三国志战略版:萌新手册系列_总结
  19. 在线学习平台网站分享 (持续更新)
  20. Java 监控方案_Java 服务端监控方案

热门文章

  1. 游戏配音如何让声音更灵动?
  2. JS 当前日期减一天
  3. 西门子AmeSim车辆仿真软件在新能源汽车开发中的应用-软件AmeSim2021版分享
  4. Xcode 真机调试无法识别手机解决方法
  5. IDEA 乱码问题完美解决
  6. JavaScript 图像压缩
  7. mysql name_MySQL常用命名
  8. 查看linux 三级缓存大小,Linux下查询CPU 缓存的工具
  9. mac安装python3.6
  10. android微信怎么建群,微信怎么建群?微信怎么建群当群主?