转自【https://blog.csdn.net/qq_35554125/article/details/79462885】

part 1:

前沿

教程材料一共会被分为七个部分。 此教程将从安装、开发环境的准备,模型,视图,模板,URL到更高级的主题(如迁移,测试和部署)中详细探讨所有基本概念。

安装

公众号里边的是Mac下的教程,我的系统是win,这也是为啥我做这个笔记的原因之一。基本的设置包括安装Python,Virtualenv和Django。

使用虚拟环境,可以让开发的每个项目都会有其独立的环境。这样的话,包之间的依赖关系不会发生冲突。同时也使得我们能在不同Django版本上运行的本地机器的项目。安装python2和3的话可以参考百度,百度是个好东西,在这里不做赘述。

安装Virtualenv

通过pip3(因为我安装了python2和3,所以把python3的pip改成pip3,为了避免使用冲突)来安装Virtualenv。在cmd中,执行:

pip3 install virtualenv

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

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

接着我们创建一个名为Development的文件夹。然后用它来组织我所有的项目和网站。接着在其中创建一个项目名称为myproject的文件夹。

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

开始创建第一个虚拟环境(参考http://www.jb51.net/article/85527.htm 使用Virtualenv来创建虚拟环境)并安装django。

在myproject文件夹中执行:

virtualenv venv

这样虚拟环境就创建好了。接着我们激活环境,执行:

venv\Scripts\activate

如果看到命令行前面有(venv),就代表激活成功,如下图。

在myproject文件夹中,我们通过上述步骤创建了一个名为venv的特殊文件夹。该文件夹内包含了一个python的副本。在我们激活了venv环境之后,当我们运行python命令时,它将使用我们存储在venv里面的本地副本,而不是我们之前在操作系统中安装的那个。

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

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

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

deactivate

但是我们现在需要保持激活状态来进行下一步!

安装Django 1.11.7

在启动了venv的前提下,运行一下命令安装django:

pip install django==1.11.7

如果使用pip install安装库比较慢,可以用豆瓣的镜像:

pip install django==1.11.7 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

现在一切准备就绪!

创建第一个项目

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

django-admin startproject myproject

命令行工具django-admin会在安装Django的时候一起自动安装好。执行了上面的命令以后,系统会为Django项目生成基础文件夹结构。现在,我们的myproject目录结构如下所示:

myproject/
|- - myproject/
| |- - 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应用程序。像博客这样的简单网站可以完全在单个应用程序中编写,例如可以将其命名为blog或weblog。

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

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

django-admin startapp boards

注意!我们这次使用的命令是startapp。 通过这条指令,系统会给我们创建以下目录结构:

myproject/
|- - myproject/
| |- - boards/
| | |- - 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 HttpResponse

def 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 url
from django.contrib import admin from boards import views urlpatterns = [
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 这个链接:

按照上述步骤就可以你的第一个视图!

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

第二部分将涉及模型,视图,模板和URLs。我们将一起探索Django所有的基础知识!

为了保持学习过程中页面同步,在原作者Github上提供了源代码。这个项目的当前状态可以在release tag v0.1-lw下找到。下面是直达链接:

https://github.com/sibtc/django-beginners-guide/tree/v0.1-lw

完整的Django入门指南学习笔记1的更多相关文章

  1. 完整的Django入门指南学习笔记7 网页自动翻译

    转自[https://simpleisbetterthancomplex.com/series/2017/10/16/a-complete-beginners-guide-to-django-part ...

  2. 完整的Django入门指南学习笔记6

    前言 欢迎来到系列教程的第六部分!在这篇教程中,我们将详细探讨基于类的视图(简称CBV).我们也将重构一些现有的视图,以便利用内置的基于类的通用视图(Generic Class-Based Views ...

  3. 完整的Django入门指南学习笔记5

    前言 欢迎来到本系列教程的第5部分,在这节课,我们将学习如何保护视图防止未登录的用户访问,以及在视图和表单中访问已经登录的用户,我们还将实现主题列表和回复列表视图,最后,将探索Django ORM的一 ...

  4. 完整的Django入门指南学习笔记2

    part2: 前沿 在第一节中,我们安装了项目所需要的一切:Python3.6以及在虚拟环境中运行的Django2.0,这部分教程继续在项目上编写代码. 开始写代码前,先讨论下项目的相关背景知识,然后 ...

  5. 完整的Django入门指南学习笔记4

    前言 这一章节将会全面介绍 Django 的身份认证系统,我们将实现注册.登录.注销.密码重置和密码修改的整套流程. 同时你还会了解到如何保护某些试图以防未授权的用户访问,以及如何访问已登录用户的个人 ...

  6. 完整的Django入门指南学习笔记3

    前言 在本节课中,我们将深入理解两个基本概念: URLs 和 Forms.在这个过程中,我们还将学习其它很多概念,如创建可重用模板和安装第三方库.同时我们还将编写大量单元测试. 如果你是从这个系列教程 ...

  7. redis入门指南学习笔记

    redis的常见命令 set key hello get key incr num get num set foo lorem incr foo hset car price 500 hset car ...

  8. Webpack新手入门教程(学习笔记)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } ...

  9. Django RF:学习笔记(8)——快速开始

    Django RF:学习笔记(8)——快速开始 安装配置 1.使用Pip安装Django REST Framework: pip install djangorestframework 2.在Sett ...

随机推荐

  1. 编译openwrt时总是报错“staging_dir/target-aarch64_generic_glibc/stam$/.tools_compile_yynyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynny' failed”

    1. 详细错误如下: tools/Makefile:146: recipe for target '/home/jello/openwrt/staging_dir/target-aarch64_gen ...

  2. Git 收集别名

    .gitconfig文件夹一般是在C:\Users\Administrator路径下,用于全局的git的配置 下面是git别名的设置: [alias] last = log -1 --stat a = ...

  3. (转)Swagger2 & Postman工具使用

    (二期)7.swagger2与postman [课程七]swagge...tman.xmind0.3MB [课程七预习]sw...tman.xmind31.3KB 随着互联网技术的发展,现在的网站架构 ...

  4. C#获取文件MD5值方法

    https://www.cnblogs.com/Ruiky/archive/2012/04/16/2451663.html private static string GetMD5HashFromFi ...

  5. 重写NLog

    接口ILogBase: public interface ILogBase { void Debug(string message); void Debug(string message, Excep ...

  6. 51nod P1305 Pairwise Sum and Divide ——思路题

    久しぶり! 发现的一道有意思的题,想了半天都没有找到规律,结果竟然是思路题..(在大佬题解的帮助下) 原题戳>>https://www.51nod.com/onlineJudge/ques ...

  7. 【转载】谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解

    转载自:https://blog.csdn.net/tantexian/article/details/48196453 SOA: 维基百科解释:SOA:面向服务的软件架构(Service Orien ...

  8. shell案例题

    目录: 1.批量生成随机字符文件名案例 2.批量改名特殊案例 3.批量创建特殊要求用户案例 1.批量生成随机字符文件名案例(P359) (1).利用openssl命令来实现 #!/bin/bash # ...

  9. 51nod 1405 树的距离之和(dfs)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1405 题意: 思路: 先求出所有点到根节点的距离,需要维护每棵子树的大小 ...

  10. POJ 3415 Common Substrings(长度不小于K的公共子串的个数+后缀数组+height数组分组思想+单调栈)

    http://poj.org/problem?id=3415 题意:求长度不小于K的公共子串的个数. 思路:好题!!!拉丁字母让我Wa了好久!!单调栈又让我理解了好久!!太弱啊!! 最简单的就是暴力枚 ...