Django入门

一. 认识Django
Django是一个高级Python Web框架,鼓励快速开发和清晰,实用的设计。由经验丰富的开发人员构建,它解决了Web开发的大部分麻烦,因此您可以专注于编写应用程序而无需重新发明轮子。它是免费和开源的。
1.快得多。
Django旨在帮助开发人员尽快将应用程序从概念到完成。
2.令人放心的安全。
Django认真对待安全性,并帮助开发人员避免许多常见的安全错误。
3.超级可扩展。
Web上一些最繁忙的站点利用Django快速灵活扩展的能力。
二. 安装Django教程
1.作为一个Python Web框架,Django需要Python。请参阅 Django可以使用哪些Python版本?详情。Python包含一个名为SQLite的轻量级数据库,因此您不需要设置数据库。

在https://www.python.org/downloads/或使用操作系统的软件包管理器获取最新版本的Python 。

您可以通过python从shell 输入来验证是否已安装Python ; 你应该看到类似的东西:
Python 3.x.y
[GCC 4.x] on linux
Type “help”, “copyright”, “credits” or “license” for more information.

设置数据库¶
只有在您希望使用PostgreSQL,MySQL或Oracle等“大型”数据库引擎时,才需要执行此步骤。要安装此类数据库,请查阅 数据库安装信息。
二.下载
下载
如何获得Django
Django在BSD许可下是开源的 。我们建议使用最新版本的Python 3.支持Python 2.7的最后一个版本是Django 1.11 LTS。有关每个Django版本支持的Python版本,请参阅 常见问题解答。以下是如何获得它:

选项1:获取最新的官方版本
最新的官方版本是2.1.4。阅读 2.1.4发行说明,然后使用pip安装 :

pip install Django==2.1.4
选项2:获取最新的开发版本
最新最好的Django版本就是我们的Git存储库(我们的版本控制系统)。这仅适用于想要在正式发布之前尝试传入更改并帮助识别错误的有经验用户。使用此shell命令获取它,这需要Git:

git clone https://github.com/django/django.git

您还可以下载开发版本 的gzip压缩包。每次提交代码时都会更新此存档。

在你得到它之后
有关详细说明,请参阅安装指南。请务必阅读与您刚刚安装的Django版本相对应的文档。

并且一定要注册django-users邮件列表,其他Django用户和Django开发人员都会互相帮助。

支持的版本
功能发布(AB,A.B + 1等)大约每八个月发布一次。这些版本将包含新功能,对现有功能的改进等。

补丁发布(ABC等)将根据需要发布,以修复错误和/或安全问题。这些版本将与相关的功能版本100%兼容,除非出于安全原因或防止数据丢失,这是不可能的。因此,“我应该升级到最新的补丁版本吗?”的答案总是“是”。

某些功能版本将被指定为长期支持(LTS)版本。这些版本将在一段保证的时间内(通常为三年)获得安全和数据丢失修复。

有关将向后移植的修补程序的详细指南,请参阅 支持的版本策略。

发布系列 最新发布的 主流支持结束1 延长支持结束2
2.1 2.1.4 2019年4月 2019年12月
2.0 2.0.9 2018年8月1日 2019年4月
1.11 LTS 3 1.11.17 2017年12月2日 至少到2020年4月
1.10 1.10.8 2017年4月4日 2017年12月2日
1.9 1.9.13 2016年8月1日 2017年4月4日
1.8 LTS 19年8月1日 2015年12月1日 2018年4月1日
1.7 1.7.11 2015年4月1日 2015年12月1日
1.6 1.6.11 2014年9月2日 2015年4月1日
1.5 1.5.12 2013年11月6日 2014年9月2日
1.4 LTS 1.4.22 2013年2月26日 2015年10月1日
1.3 1.3.7 2012年3月23日 2013年2月26日
以下是未来路线图的样子:

发布系列 发布日期 主流支持结束1 延长支持结束2
2.2 LTS 2019年4月 2019年12月 至少到2022年4月
3.0 2019年12月 2020年8月 2021年4月
3.1 2020年8月 2021年4月 2021年12月
3.2 LTS 2021年4月 2021年12月 至少到了2024年4月
[1]安全修复程序,数据丢失错误,崩溃错误,新引入的功能中的主要功能错误以及旧版Django的回归。
[2]安全修复和数据丢失错误。
[3]支持Python 2.7的最新版本。

三。安装Django¶
你有三个简单的选项来安装Django:

安装正式版。这是大多数用户的最佳方法。
安装操作系统分发版提供的Django版本。
安装最新的开发版本。此选项适用于需要最新和最强大功能并且不怕运行全新代码的发烧友。您可能会在开发版本中遇到新的错误,但报告它们有助于Django的开发。此外,与最新的稳定版本相比,第三方软件包的发行版不太可能与开发版本兼容。
请始终参考与您正在使用的Django版本对应的文档!

如果您执行前两个步骤中的任何一个,请留意开发版本中标记为新文档的部分文档。该短语标记仅在Django的开发版本中可用的功能,并且它们可能不适用于正式版本。

验证¶
要验证Python可以看到Django,请python从shell中输入。然后在Python提示符下,尝试导入Django:

导入django
print(django.get_version())
2.1
您可能安装了另一个版本的Django。

四.文档(创建一个Django应用程序)
编写你的第一个Django应用程序,第1部分¶
让我们通过例子来学习。

在本教程中,我们将引导您完成基本轮询应用程序的创建。

它由两部分组成:

一个公共站点,允许人们查看民意调查并在其中投票。
一个管理站点,允许您添加,更改和删除民意调查。
我们假设你已经安装了Django。您可以通过在shell提示符中运行以下命令(由$前缀表示)来告知Django已安装以及哪个版本:

/ 
$ python -m django --version
如果安装了Django,您应该会看到安装的版本。如果不是,您将收到错误消息“没有名为django的模块”。

本教程是为Django 2.1编写的,它支持Python 3.5及更高版本。如果Django版本不匹配,您可以使用本页右下角的版本切换器参考您的Django版本的教程,或者将Django更新到最新版本。如果你使用的是旧版本的Python,请检查我可以使用哪些Python版本的Django?找到Django的兼容版本。

有关如何删除旧版本Django并安装较新版本的建议,请参阅如何安装Django。

哪里可以获得帮助:

如果您在阅读本教程时遇到问题,请发送消息给django-users或者通过irc.freenode.net上的#django与其他可能提供帮助的Django用户聊天。

创建项目¶
如果这是你第一次使用Django,你将不得不处理一些初始设置。也就是说,您需要自动生成一些建立Django 项目的代码- Django实例的设置集合,包括数据库配置,Django特定选项和特定于应用程序的设置。

从命令行cd进入要存储代码的目录,然后运行以下命令:

/ 
$ django-admin startproject mysite
这将mysite在当前目录中创建一个目录。如果它不起作用,请参阅运行django-admin的问题。

注意

您需要避免在内置Python或Django组件之后命名项目。特别是,这意味着你应该避免使用像 django(这将与Django本身冲突)或test(与内置Python包冲突)这样的名称。

这段代码应该在哪里生活?

如果您的背景是普通的PHP(不使用现代框架),那么您可能习惯将代码放在Web服务器的文档根目录下(在某个地方/var/www)。使用Django,你不会这样做。将任何此Python代码放在​​Web服务器的文档根目录中并不是一个好主意,因为它可能会使人们可能通过Web查看您的代码。这对安全性不利。

将代码放在文档根目录之外的某个目录中,例如 /home/mycode。

让我们来看看startproject创造了什么:

mysite/
manage.py
mysite/
init.py
settings.py
urls.py
wsgi.py
这些文件是:

外部mysite/根目录只是项目的容器。它的名字对Django来说无关紧要; 你可以将它重命名为你喜欢的任何东西。
manage.py:一个命令行实用程序,允许您以各种方式与此Django项目进行交互。您可以manage.py在django-admin和manage.py中阅读有关的所有详细信息 。
内部mysite/目录是项目的实际Python包。它的名称是您需要用来导入其中任何内容的Python包名称(例如mysite.urls)。
mysite/init.py:一个空文件,告诉Python该目录应该被视为Python包。如果您是Python初学者,请阅读官方Python文档中有关包的更多信息。
mysite/settings.py:此Django项目的设置/配置。 Django设置将告诉您有关设置如何工作的所有信息。
mysite/urls.py:这个Django项目的URL声明; 您的Django支持的站点的“目录”。您可以在URL调度程序中阅读有关URL的更多信息。
mysite/wsgi.py:与WSGI兼容的Web服务器的入口点,用于为您的项目提供服务。有关更多详细信息,请参阅如何使用WSGI进行部署。
开发服务器¶
让我们验证您的Django项目是否有效。mysite如果尚未更改到外部目录,请运行以下命令:

/ 
$ python manage.py runserver
您将在命令行中看到以下输出:

执行系统检查…

系统检查发现没有问题(0静音)。

您有未应用的迁移; 在应用之前,您的应用可能无法正常运行。
运行’python manage.py migrate’以应用它们。

2018年12月20日 - 15:50:53
Django 2.1版,使用设置’mysite.settings’
在http://127.0.0.1:8000/启动开发服务器
使用CONTROL-C退出服务器。
注意

暂时忽略有关未应用数据库迁移的警告; 我们很快就会处理数据库。

您已经启动了Django开发服务器,这是一个纯粹用Python编写的轻量级Web服务器。我们已经将它包含在Django中,因此您可以快速开发,而无需处理配置生产服务器(如Apache),直到您准备好进行生产。

现在是时候注意了:不要在类似生产环境的任何地方使用这个服务器。它仅用于开发时使用。(我们的业务是制作Web框架,而不是Web服务器。)

现在服务器正在运行,请使用Web浏览器访问http://127.0.0.1:8000/。你会看到一个“祝贺!”页面,火箭起飞。有效!

改变端口

默认情况下,该runserver命令在端口8000的内部IP上启动开发服务器。

如果要更改服务器的端口,请将其作为命令行参数传递。例如,此命令在端口8080上启动服务器:

/ 
$ python manage.py runserver 8080
如果要更改服务器的IP,请将其与端口一起传递。例如,要监听所有可用的公共IP(如果您正在运行Vagrant或想要在网络上的其他计算机上展示您的工作,这很有用),请使用:

/ 
$ python manage.py runserver 0:8000
0是0.0.0.0的快捷方式。可以在runserver参考中找到开发服务器的完整文档。

自动重装 runserver

开发服务器根据需要自动为每个请求重新加载Python代码。您无需重新启动服务器即可使代码更改生效。但是,某些操作(如添加文件)不会触发重新启动,因此在这些情况下您必须重新启动服务器。

创建民意调查应用¶
既然你的环境 - 一个“项目” - 已经建立起来,你就可以开始工作了。

您在Django中编写的每个应用程序都包含一个遵循特定约定的Python包。Django附带了一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。

项目与应用

项目和应用程序之间有什么区别?应用程序是执行某些操作的Web应用程序 - 例如,Weblog系统,公共记录数据库或简单的轮询应用程序。项目是特定网站的配置和应用程序的集合。项目可以包含多个应用程序。一个应用程序可以在多个项目中。

您的应用程序可以存在于Python路径的任何位置。在本教程中,我们将在您的manage.py 文件旁边创建我们的民意调查应用程序,以便可以将其导入为自己的顶级模块,而不是子模块mysite。

要创建应用程序,请确保您与该目录位于同一目录中manage.py 并键入以下命令:

/ 
$ python manage.py startapp polls
那将创建一个目录polls,其布局如下:

polls/
init.py
admin.py
apps.py
migrations/
init.py
models.py
tests.py
views.py
此目录结构将容纳轮询应用程序。

写下你的第一个视图¶
我们来写第一个视图。打开文件polls/views.py 并在其中放入以下Python代码:

民调/的views.py ¶
from django.http import HttpResponse

def index(request):
return HttpResponse(“Hello, world. You’re at the polls index.”)
这是Django中最简单的视图。要调用视图,我们需要将其映射到URL - 为此我们需要一个URLconf。

要在polls目录中创建URLconf,请创建一个名为的文件urls.py。您的app目录现在应该如下所示:

polls/
init.py
admin.py
apps.py
migrations/
init.py
models.py
tests.py
urls.py
views.py
在该polls/urls.py文件中包含以下代码:

民调/的urls.py ¶
from django.urls import path

from . import views

urlpatterns = [
path(’’, views.index, name=‘index’),
]
下一步是将根URLconf指向polls.urls模块。在 mysite/urls.py,添加导入django.urls.include并include()在urlpatterns列表中插入 ,所以你有:

mysite的/的urls.py ¶
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
path(‘polls/’, include(‘polls.urls’)),
path(‘admin/’, admin.site.urls),
]
该include()函数允许引用其他URLconf。每当Django遇到时include(),它都会删除与该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf以进行进一步处理。

背后的想法include()是使即插即用的URL变得容易。由于民意调查位于他们自己的URLconf(polls/urls.py)中,因此可以将它们放在“/ polls /”下,或“/ fun_polls /”下,或“/ content / polls /”下,或任何其他路径根目录下,并且应用仍会工作。

什么时候用 include()

include()当您包含其他URL模式时,应始终使用。 admin.site.urls是唯一的例外。

您现在已将index视图连接到URLconf。让我们验证它是否正常工作,运行以下命令:

/ 
$ python manage.py runserver
在浏览器中转到http:// localhost:8000 / polls /,您应该看到文本“ Hello,world。你在民意调查指数。“,您在index视图中定义的 。

网页未找到?

如果您在此处获得错误页面,请检查您是否要访问 http:// localhost:8000 / polls /而不是http:// localhost:8000 /。

该path()函数传递了四个参数,两个必需: route和view,以及两个可选:kwargs,和name。在这一点上,值得回顾一下这些论点的用途。

path()参数:route¶
route是包含URL模式的字符串。处理请求时,Django从第一个模式开始urlpatterns并沿着列表向下移动,将请求的URL与每个模式进行比较,直到找到匹配的模式。

模式不搜索GET和POST参数或域名。例如,在请求中https://www.example.com/myapp/,URLconf将查找 myapp/。在请求中https://www.example.com/myapp/?page=3,URLconf也会查找myapp/。

path()参数:view¶
当Django找到匹配的模式时,它调用指定的视图函数,其中一个HttpRequest对象作为第一个参数,并且路由中的任何“捕获”值作为关键字参数。我们稍后会给出一个例子。

path()参数:kwargs¶
任意关键字参数可以在字典中传递到目标视图。我们不打算在教程中使用Django的这个功能。

path()参数:name¶
命名您的URL可让您从Django的其他地方明确地引用它,尤其是在模板中。此强大功能允许您在仅触摸单个文件的同时对项目的URL模式进行全局更改。

如果您对基本请求和响应流感到满意,请阅读 本教程的第2部分以开始使用数据库。

|
|

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值