Django教程

时间:2020-02-23 14:33:06  来源:igfitidea点击:

Django是使用Python编写的高级网络框架。
它是免费和开源的,可用于轻松开发Web应用程序。
今天,我们将学习Django环境,并将在本地主机上设置第一个Django Web应用程序。

Django为什么如此受欢迎?

Django负责网络开发的常见工作,因此您可以专注于编写应用程序特有的工作。
该框架为您提供了预定义的模块和工具,因此您无需每次都重新发明轮子。

很少有使Django在Web应用程序开发中脱颖而出的功能:

  • 身份验证:Django系统同时处理身份验证和授权。

  • URL路由:Django使您可以设计简单的URL路由。

  • 安全性:Django负责Web应用程序的安全性。
    它启用了针对许多漏洞的保护,例如默认情况下的SQL注入,跨脚本。

  • 数据库集成:Django为我们负责数据库集成。
    Django主要使用的主要数据库是PostgreSQL,MySQL,SQLite和Oracle。
    SQLite是默认数据库。
    尽管其他第三方数据库也能很好地工作。

  • 数据库迁移:Django使用ORM将对象映射到数据库。
    因此,数据库迁移很容易。

此外,Django有充分的文档记录,并具有广泛的社区支持。
因此,毫无疑问,Django非常受欢迎,可以快速轻松地开发Web应用程序。

在以下部分中,我们将开发一个显示" Hello World"的网络应用程序。
我们将其部署在本地主机上。

Django Hello World项目

Python,Virtualenv和Django是设置我们的Web应用程序需要安装的三项主要内容。

安装Python

确保在系统上安装了Python3。
您可以通过在系统上运行以下命令来进行检查。

python3

如果您没有安装Python,可以从他们的下载。

在Mac OSX上,您可以使用Homebrew快速安装它:

brew install python3

由于Mac OS已随附python。
安装python将同时保留Python2和Python3版本。

安装虚拟环境

虚拟环境用于将我们的Python和Django项目与系统的其余部分隔离。
要安装virtualenv,我们将使用Python随附的pip工具。

在终端中运行以下命令。

sudo pip3 install virtualenv

以下是我的终端的屏幕截图:

由于我以前已经安装过,因此不会再为我安装了。
忽略警告。

现在我们需要创建我们的项目。
在终端中运行以下命令,为您的Python Django Project创建一个新文件夹。

mkdir theitroadHelloDjango
cd theitroadHelloDjango

现在,使用以下命令在该项目中添加虚拟环境:

virtualenv -p /usr/local/bin/python3 env

-p告诉虚拟环境我们希望使用的python的路径。
在本教程中,我们将使用python3。

env是我们设置的环境名称。
您可以在任何地方设置任何名称。

终端显示以下内容:

完成后,我们就可以启动虚拟环境了:

对于mac osx,我们运行以下命令:

source env/bin/activate

对于Windows:

env/script/activate

终端显示以下内容:

注意:从现在开始,对于Mac OS X终端,激活的虚拟环境名称将显示在每个命令中。
(env)

要停止虚拟环境,我们需要在终端中运行deactivate

由于我们需要快速创建第一个应用程序,因此暂时不要执行此操作。

接下来安装Django。

安装Django

只需在终端中执行以下命令即可安装Django。

pip3 install django

恭喜您,到目前为止!您已经准备创建第一个Django项目。

创建新的Django项目

要在虚拟环境中创建新项目,请执行以下命令:

django-admin startproject HelloDjango

django-admin是一个内置命令。

我们的项目结构现在看起来像这样:

它包含一个内部文件夹,其名称相同,即本例中的" HelloDjango"。

创建的一些预定义的python文件是:

  • __init __.py:这表明该目录应被视为Python软件包。

  • settings.py:此文件包含项目的所有配置。

  • urls.py:此文件用于URL路由。
    您可以在此处定义应用程序不同目录的URL路径。

  • wsgi.py:WSGI兼容的Web服务器为您的项目提供服务的入口点。
    这只是一个网关。
    我们将在以后的教程中对此进行研究。

  • manage.py:用于管理我们的Django项目。
    在此文件上,我们将运行命令以进行部署,测试我们的应用程序以及在需要时进行数据库迁移。
    这是一个命令行实用程序。
    该文件位于外部HelloDjango文件夹中。

运行以下命令将项目部署到服务器上。

python3 manage.py runserver

忽略迁移错误。

默认情况下,服务器已在端口8000上启动。

在浏览器中打开URL:https://127.0.0.1:8000/,您应该看到以下内容:

要在其他端口上运行服务器,只需在命令后将端口号放入python3 manage.py runserver 8080即可。

要在网络中存在的所有IP上运行服务器,请执行以下命令:python3 manage.py runserver 0:8000

要停止服务器,请执行Ctrl +C。

现在,我们创建一个Hello World Django Web应用程序。

创建Django Web应用程序

一个Django项目可以包含一个或者多个Django应用。

我们的settings.py文件已经包含一些预定义的已安装Django Apps:

要创建自己的Django App,请转到外部HelloDjango文件夹,然后在终端中运行以下命令。

django-admin startapp helloworld

这将在我们的Django项目中创建一个" helloworld"应用。

现在是我们项目的结构:

让我们看一下Django应用中的文件:

  • models.py:Django App的实体在这里定义。
    这些被转换为数据库表。

  • migrations /:此文件夹存储文件以跟踪数据库迁移。

  • admin.py:这是自动生成的Django Admin App的配置文件。

  • app.py:这是当前应用程序的配置文件。

  • tests.py:Django App的单元测试写在这里。

  • views.py:用于在我们的Web应用程序中显示视图。
    它由执行网络请求并获取响应的功能组成。

  • urls.py:仅在当前应用中执行URL路由。
    它与项目中存在的" urls.py"文件不同,后者可以在项目级别进行URL分配。
    这意味着它可以包含不同应用程序的URL路由列表。

当项目部署在服务器上时,将生成__pycache__。

现在,在我们的HelloDjango项目的settings.py文件中添加helloworld应用。

现在在" views.py"文件中进行操作:

from django.shortcuts import render
# Create your views here.

from django.http import HttpResponse

def hello(request):
  return HttpResponse('Hello, World!, Django')
  • 来自django.shortcuts的导入渲染用于加载Django视图模板。

  • hello函数返回一个响应,该响应将字符串打印到屏幕上。

URL映射

URL映射是指将URL映射到Django视图。
我们使用正则表达式和元组进行URL映射。
URL映射在url.py Python文件中完成。
下面是一个示例url.py文件:

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'^hello/', 'myapp.views.hello', name = 'hello'),
  url(r'^', include('example.urls')) # tell django to read urls.py in example app
]
  • 第一个参数:正则表达式-传递的第一个参数通常是一个正则表达式。
    r’后跟一个^。
    ^ $表示空路径。
    这意味着根路径。

  • 第二个参数:视图路径-其中您将路径传递到从该正则表达式网址触发的视图。
    您还可以在此处包括一个新的url路由器,它指向另一个Django应用程序/模块。
    为此,使用了include()。

  • 第三个参数:URL名称-为了进行反向查找,传递URL路径的名称。

当运行URL127.0.0.1/hello时,前面代码中的第二个URL模式从views.py文件调用hello函数。

re-path和path是自Django 2.0以来引入的新关键字。
从django.urls导入include,path,re_path re_path()与url()类似path()没有正则表达式。
url()将来会被弃用。

URL路由

让我们进行URL路由,以便加载此视图,而不是之前的Django文档视图。

使用以下代码在内部HelloDjango项目文件夹中编辑urls.py

from django.contrib import admin
from django.urls import urls
from helloworld import views

urlpatterns = [
  url(r'^$', views.hello, name='hello'),
  url(r'^admin/', admin.site.urls),
]

^ $与空路径匹配。
因此,views.py将在主页上打开。

让我们使用python3 manage.py runserver运行服务器

最后,我们创建了第一个Django Project和Hello World Web App。

现在,您可以使用Ctrl + C命令终止服务器。
然后运行" deactivate"命令关闭虚拟环境。