带你构建你的第一个Python和Django应用程序

群内不定时分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流

您以前可能听说过Python,特别是如果您已经编写了一段时间。

Python是一种高级的通用编程语言。这意味着你可以使用它来编写从简单的游戏到支持每月数百万用户的网站的任何内容。

事实上,每月有数百万访问者的几个高调站点依靠Python来提供一些服务。例如YouTube和Dropbox

这就是说,为什么你应该首先使用Python?为什么不是像Ruby或PHP这样疯狂的其他流行语言之一呢?那么,用Python你会得到以下好处:

易于阅读的语法。

语言周围的真棒社区。

简单易学。

Python对于从基本shell sripting到高级web开发的各种任务是有用的。

何时不使用Python

虽然使用像wxPython这样的工具可以很容易地使用Python编写桌面应用程序,但是您通常会更好地使用您所针对的平台提供的专用工具,例如Windows上的.NET。

当您的特定用例具有非常专业的需求时,您也不应该使用Python,而其他语言可以更好地满足这些要求。一个例子就是当你构建一个嵌入式系统时,一个像C,C ++和Java这样的语言占统治地位的领域。

Python的2对3的Python

Python 2.7.x和3.x都被广泛使用。Python 3将变化引入到需要重写Python 2中编写的应用程序的语言中,以便与Python 3.x分支一起工作。然而,你需要使用的大多数库现在已经被移植到Python 3。

我用的是Python 3。虽然原理保持不变,但只需要很少的语法修改就可以使代码在Python 2.7.x下运行。

一些Python代码示例

你好,世界

正如我之前所说,Python的主要好处之一是它的“非常容易阅读的语法。多么容易?检查Python的无处不在的版本Hello World。

此代码打印出来Hello, World的控制台。您可以通过访问此站点轻松地尝试此代码,将代码示例粘贴到页面右侧的编辑器中,然后单击run页面上方的按钮以查看输出。

条件逻辑

条件逻辑同样简单。这里有一些代码来检查用户的年龄是否高于18岁,如果是,打印Access allowed或Access not allowed其他。

该input()功能用于读取键盘输入。因此,在运行脚本执行脚本的其余部分之后,您需要在终端提示符中键入一些内容。请注意,该input()函数被封装在int()函数中。

这是因为input()读取值strings,但我们需要年龄是一个integer。因此,我们必须将键盘输入强制转换为字符串,否则在检查字符串是否大于18时会出现错误。

最后,请注意else对if语句中不符合条件的任何其他输入执行的语句。

抽象数据类型

Python也有一些优秀的内置抽象数据类型,用于存放项目集合。一个例子是可以用来保存任何类型的变量的列表。下面的代码显示了如何创建一个列表,并遍历它来将每个项目打印到终端。

上面的代码创建了一个包含数字,字符串和列表的列表(是的,列表可以包含其他列表!)。为了遍历列表,一个for-in循环派上用场。请记住,列表是零索引的,所以我们也可以使用索引访问列表项。例如,要输出字符串python,你可以写:

字典

Python提供的另一个优秀的数据类型是字典。字典存储键值对,类似于JSON对象。创建一个字典也很简单。

现在你已经知道了一点Python,我们来谈谈Django。

Django的

Django是一个Python Web框架。它是免费的,开源的,自2005年以来一直存在。它是非常成熟的,并具有优秀的文档和默认包括真棒功能。它提供的一些优秀的工具是:

优秀的轻量级服务器开发和测试。

良好的模板语言。

像CSRF这样的安全功能包括在内。

Django中包含了许多其他有用的东西,但是随着您的进行,您可能会发现它们。我们将在本教程中使用Django来构建我们的网站。

设置

在本教程中,我将向您展示如何启动并运行Django网站。在我们到达那里之前,首先从Python网站上获取最新的Python的副本。

请注意,如果你在OSX上,你已经安装了自制软件,你可以做

之后,直接进入该Getting started with Django部分

在为您的操作系统安装正确的版本后,您将需要确保它已正确设置。打开一个终端并键入:python3 你应该看到类似下面的东西:

这是交互式的Python shell。CTRL + D现在点击退出

设置环境

为了避免使用不必要的软件包污染我们的全球范围,我们将使用虚拟环境来存储我们的软件包。一个优秀的虚拟环境管理员可免费获得virtualenv。我们将使用Python的包管理器pip来安装这个和其他的包,比如Django,我们将在后面要求。首先,让我们virtualenv安装。

完成之后,创建一个名为“项目”的文件夹,然后cd放入任意位置。

一旦进入项目文件夹,创建另一个名为hello的文件夹。该文件夹将保存我们的应用程序

在这一点上,我们需要创造环境来满足我们的要求。我们将在hello文件夹内做到这一点。

该-p开关告诉virtualenv您要使用的Python版本的路径。随意用自己的Python安装路径切换出路径。名称env是环境名称。您也可以将其更改为符合项目名称的其他项目。

一旦完成,你应该有一个文件夹env在你的hello文件夹内调用。现在你的结构应该看起来像这样。

您现在已经准备好激活环境并开始编码了!

你会看到一个环境名称的提示。这意味着环境是活跃的。

安装Django

这是一个简单的点子安装。Django的最新版本是Django 1.9.6

创建一个应用程序

现在已经安装了Django,我们可以使用它的启动脚本来创建一个框架项目。这和使用其管理脚本一样简单。

运行这个命令创建一个具有以下结构的框架django应用程序:

当您查看helloapp创建的文件夹时,您将找到一个名为的文件manage.py和另一个名为的文件夹helloapp。这是您的主要项目文件夹,并将项目的设置包含在名为的文件中settings.py以及项目中的路径中urls.py。随意打开settings.py文件以熟悉其内容。

准备好咱们继续前进

更改应用程序设置

让我们改变一些设置。settings.py用你最喜欢的编辑器打开文件。找到一个名为Installed Apps的部分,看起来像这样。

Django运用应用程序的概念。应用程序是一个独立的代码单元,可以自行执行。一个应用程序可以做很多事情,比如在浏览器上提供一个网页,或者处理用户身份验证或者其他任何你能想到的事情。Django带有一些预先安装的默认应用程序,如身份验证和会话管理器应用程序。我们将创建的任何应用程序或我们将需要的第三方应用程序将在Installed Apps安装默认应用程序后添加到列表的底部。

在我们创建一个自定义应用程序之前,让我们改变应用程序的时区。Django使用tz database时区,其中的列表可以在这里找到。

时区设置看起来像这样。

将其改为适合您的时区的东西。

创建你自己的应用程序

需要注意的是,Django应用程序遵循模型,视图,模板范例。简而言之,应用程序从模型中获取数据,视图对数据做了一些处理,然后渲染包含处理信息的模板。因此,Django模板对应于传统MVC中的视图,而Django视图可以被比作传统MVC中的控制器。

这就是说,让我们来创建一个应用程序。cd进入第一个helloapp文件夹并输入;

运行此命令将创建一个名为howdy的应用程序。你的文件结构现在应该看起来像这样。

为了让Django识别我们全新的应用程序,我们需要将应用程序名称添加到Installed Apps我们settings.py文件中的列表中。

一旦完成,让我们运行我们的服务器,看看会输出什么。我们提到Django带有一个内置的轻量级Web服务器,它在开发过程中很有用,但不应该用于生产。按如下所示运行服务器:

您的输出应该类似于以下内容:

如果仔细观察,您将看到一条警告,提示您有未应用的迁移。现在忽略这一点。转到您的浏览器并访问http://127.0.0.1:8000/。如果一切顺利,您应该看到Django的欢迎页面。

我们将用我们自己的模板替换这个页面。但首先,让我们谈谈迁移。

迁移

迁移使您可以轻松地更改数据库模式(模型),而不必丢失任何数据。无论何时您创建新的数据库模型,运行迁移都会更新您的数据库表以使用新的模式,而不必丢失任何数据,或者经历繁琐的丢弃和重新创建数据库的过程。

Django带有一些已经为其默认应用程序创建的迁移。如果您的服务器仍在运行,请通过点击停止CTRL + C。输入以下内容应用迁移:

如果成功,你会看到类似这个的输出。

现在运行服务器不会显示任何警告。

网址和模板

当我们运行服务器时,显示了默认的Django页面。我们需要Django来访问我们的howdy应用程序,当有人去的主页网址是/。为此,我们需要定义一个URL来告诉Django在哪里寻找主页模板。

打开urls.py内部helloapp文件夹内的文件。它应该看起来像这样。

正如你所看到的,Django管理站点有一个现有的URL模式,默认使用Django。让我们添加我们自己的网址来指向我们的howdy应用程序。编辑文件看起来像这样。

请注意,我们已经include从django.conf.urls添加了一个导入,并为空路线添加了一个url模式。当有人访问主页(在我们的例子中是http:// localhost:8000)时,Django将在howdy应用程序中寻找更多的url定义。由于没有,运行应用程序将产生巨大的堆栈跟踪由于ImportError。

我们来解决这个问题。转到howdy应用程序文件夹并创建一个名为的文件urls.py。该howdy应用程序文件夹现在应该是这样的。

在新urls.py文件里面,写下这个。

此代码从我们的howdy应用程序导入视图,并期望调用的视图HomePageView被定义。由于我们没有一个,打开应用程序中的views.py文件,howdy并写下这段代码。

这个文件定义了一个叫做视图HomePageView。Django视图接受request并返回一个response。在我们的例子中,这个方法get需要一个对我们urls.py文件中定义的url的HTTP GET请求。在附注中,我们可以将我们的方法重命名post为处理HTTP POST请求。

一旦接收到HTTP GET请求,该方法就会呈现一个名为index.htmlwhich 的模板,它只是一个普通的HTML文件,可以在普通的HTML标签中写入特殊的Django模板标签。如果您现在运行服务器,您将看到以下错误页面:

这是因为我们根本没有任何模板!Django templates在您的应用程序内的文件夹中查找模板,所以请继续在您的howdy应用程序文件夹中创建一个模板。

进入刚创建的模板文件夹,并创建一个名为的文件 index.html

在index.html文件里面,粘贴这个代码。

现在运行你的服务器。

你应该看到你的模板呈现。

链接页面

我们再添加一个页面。在您的howdy/templates文件夹中,添加一个名为的文件about.html。在里面,写下这个HTML代码:

一旦完成,编辑原始index.html页面看起来像这样。

点击About me链接将不会工作,因为我们的应用程序没有/about/定义的网址。让我们编辑urls.py我们的howdy应用程序中的文件来添加它。

一旦我们添加了路线,about.html当我们访问/about/网址时,我们需要添加一个视图来呈现模板。让我们编辑应用程序中的views.py文件howdy。

请注意,在第二个视图中,我没有定义一个get 方法。这只是使用这个TemplateView类的另一种方式。如果您设置了该template_name属性,则对该视图的获取请求将自动使用定义的模板。尝试改变HomePageView使用中使用的格式AboutPageView。

现在运行服务器并访问主页应该显示我们的原始模板,并添加到关于页面的新增链接。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180104A0XR5J00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券