转自【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. Git学习笔记--- diff工具 kdiff3

    图形化的git diff 与 git merge工具:kdiff3 1.安装 win10: 去官网左边找到Download,下载双击安装. Linux(Debian Ubuntu 18.04): ap ...

  2. Win10子系统Ubuntu安装llvm+clang

    https://apt.llvm.org/ 首先 然后 再然后修改/etc/apt/sources.list,添加下面的东西 然后 参考: https://blog.kowalczyk.info/ar ...

  3. Python 安装与环境变量配置

    一.软件下载 Python安装包下载地址:https://www.python.org/ 二.安装过程(略) 三.环境变量配置: 方法一:使用cmd命令添加path环境变量 在cmd下输入: path ...

  4. Tag Helpers in forms in ASP.NET Core

    Tag Helpers in ASP.NET Core Tag Helpers in forms in ASP.NET Core HTML Form element ASP.NET Core buil ...

  5. Shell脚本(三)

    摘自:菜鸟教程 http://www.runoob.com/linux/linux-shell-echo.html Shell命令 1. echo命令 字符串输出 echo "OK! \c& ...

  6. How to install Bekeley Extension Software Switch(BESS)?

    参考: Github BESS How to install Bekeley Extension Software Switch(BESS)? Introduction BESS is a modul ...

  7. 5、web站点架构模式简介及Nginx

    LB Cluster: 提升系统容量的方式: scale up:向上扩展 scale out:向外扩展 LVS工作在内核中,本身的数量不受套接字数量限制,利用LVS做调度器,优化得当的话,并发数量可以 ...

  8. Educational Codeforces Round 25 E. Minimal Labels 拓扑排序+逆向建图

    E. Minimal Labels time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  9. 【二】jquery之基础概念与jquery对象与dom对象的区别及混合使用

    一:jquery基本概念 1.jquery是一个javascript框架,它是一个轻量级的js库 2.当下流行的js库有: jquery MooTools Prototype 3.$(ducoment ...

  10. java static方法不能被重写@Override

    重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的. 语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向 ...