Web框架之Django:

1. Django简介

Django是一个用Python语言写的开源Web框架,其目标是快速开发安全可维护的Web应用程序。Django采用MVT(Model-View-Template)的设计模式,强调代码复用,方便多人协作开发。

Django具有完善的文档和强大的支持社区,被广泛应用于各种Web应用程序的开发,包括新闻、社交、教育、电商等领域。

2. Django的安装和配置

2.1 安装Python

在安装Django之前,需要先安装Python。Django支持的Python版本为2.7到3.9,建议使用最新的稳定版本。

Python官网提供了Windows和Mac OS X的安装程序,Linux用户可以使用自带的包管理器安装。

# Windows安装Python

下载并运行Python安装程序:https://www.python.org/downloads/windows/

# Mac OS X安装Python

下载并运行Python安装包,或使用Homebrew包管理器安装:

$ brew install python3

2.2 安装Django

推荐使用pip包管理器安装Django。

# 安装Django

$ pip install Django

2.3 创建Django项目

使用Django创建项目需要用到django-admin工具,首先需要将其加入系统环境变量中。

# Windows添加环境变量

将C:\PythonXX\Scripts(XX为Python版本号)添加至PATH环境变量中

# Mac OS X、Linux添加环境变量

将/usr/local/bin加入PATH环境变量中

使用django-admin创建Django项目。

# 创建Django项目

$ django-admin startproject myproject

运行上述命令后,会创建一个名为myproject的Django项目,包括一个名为manage.py的可执行文件和一个名为myproject的文件夹,后者包含了Django项目的设置和配置文件。

3. Django项目的结构

Django项目的结构如下:

myproject/

├── manage.py

└── myproject/

├── __init__.py

├── settings.py

├── urls.py

└── wsgi.py

3.1 manage.py

manage.py是Django的命令行工具,可以通过它执行各种Django命令,例如启动开发服务器、创建数据库表等。

# 查看Django所有可执行的命令

$ python manage.py help

3.2 myproject/

myproject/是Django项目的根文件夹,其中包含了该项目的设置和配置文件、URL映射和WSGI配置文件。

3.3 myproject/__init__.py

myproject/__init__.py是一个空文件,告诉Python该文件夹是一个Python代码包。Django在加载时会查找该文件夹。

3.4 myproject/settings.py

myproject/settings.py包括Django项目的所有设置,例如数据库配置、静态文件目录、时间格式等。

以下代码展示了一个简单的settings.py文件的内容:

# Django settings for myproject project.

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

SECRET_KEY = 'secret_key'

DEBUG = True

ALLOWED_HOSTS = []

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

]

MIDDLEWARE = [

'django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware',

]

ROOT_URLCONF = 'myproject.urls'

TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

],

},

},

]

WSGI_APPLICATION = 'myproject.wsgi.application'

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

}

}

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

STATIC_URL = '/static/'

settings.py中,我们可以看到Django的各种设置,包括数据库配置、中间件、URL配置、模板引擎和静态文件目录等。

3.5 myproject/urls.py

myproject/urls.py包括Django项目的URL映射配置,决定了各个URL请求应该由哪个视图函数来处理。

以下代码展示了一个简单的urls.py文件的内容:

# myproject/urls.py

from django.urls import path

from . import views

urlpatterns = [

path('', views.index, name='index'),

path('about/', views.about, name='about'),

path('contact/', views.contact, name='contact'),

]

# myapp/views.py

from django.http import HttpResponse

def index(request):

return HttpResponse("Hello, world!")

def about(request):

return HttpResponse("About us")

def contact(request):

return HttpResponse("Contact us")

urls.py中,我们需要导入path函数和视图函数,在urlpatterns中配置URL映射关系。

3.6 myproject/wsgi.py

myproject/wsgi.py主要用于配置WSGI接口,将Django应用与Web服务器连接起来。

4. MVT设计模式

Django采用了一种MVT的设计模式,与MVC(Model-View-Controller)类似。

MVT的含义是模型(Model)、视图(View)、模板(Template)。

4.1 数据库模型(Model)

在Django中,数据库模型用Python类来表示,称为模型类。模型类定义了数据表的结构和数据操作方法。

Django的ORM(Object-Relational Mapping)工具将Python对象与数据库表格进行映射,使得开发者无需关心底层的数据库实现细节,便可以轻松地操作数据库。

以下是一个简单的Django模型类示例:

# myapp/models.py

from django.db import models

class Book(models.Model):

title = models.CharField(max_length=100)

author = models.CharField(max_length=50)

publish_date = models.DateField()

def __str__(self):

return self.title

上述代码定义了一个名为Book的模型类,包含了书名、作者和出版日期字段。我们可以通过ORM工具来创建该模型对应的数据库表格,并对其进行操作。

4.2 视图函数(View)

视图函数接收来自用户的HTTP请求,并将处理结果返回给用户。

以下是一个简单的Django视图函数示例:

# myapp/views.py

from django.http import HttpResponse

def hello(request):

return HttpResponse("Hello, world!")

上述代码定义了一个名为hello的视图函数,接收来自用户的HTTP请求,并返回一个包含文本字段的HTTP响应。

4.3 模板(Template)

模板负责数据的展示和HTML页面的渲染,在Django中,模板使用Django Template语言进行编写。

以下是一个简单的Django模板示例:

My App

{{ title }}

{{ content }}

上述代码展示了一个包含变量的Django模板,{{ title }}{{ content }}是模板变量,在模板渲染时会动态地替换为变量的值。

5. Django开发流程

在Django中,开发流程一般是先定义数据模型,再编写视图函数和模板,最后配置URL映射关系。

以下是一个简单的Django开发流程示例:

5.1 编写模型类

models.py文件中,定义数据模型的类,例如:。

# myapp/models.py

from django.db import models

class Book(models.Model):

title = models.CharField(max_length=100)

author = models.CharField(max_length=50)

publish_date = models.DateField()

def __str__(self):

return self.title

5.2 编写视图函数

views.py文件中,编写与模型类相关的视图函数,例如:

# myapp/views.py

from django.http import HttpResponse

from .models import Book

def book_list(request):

books = Book.objects.all()

return render(request, 'myapp/book_list.html', {'books': books})

上述代码定义了一个名为book_list的视图函数,从数据库中查询所有的Book对象,并将其传递到名为book_list.html的模板中,返回一个渲染后的HTML页面。

5.3 编写模板

templates/myapp/book_list.html文件中,编写与视图函数相关的模板,例如:

Book List

Book List

{% for book in books %}

{{ book.title }} by {{ book.author }}

{% endfor %}

上述代码展示了一个包含循环和条件语句的模板,使用{% for %}循环语句遍历所有Book对象,并使用{{ book.title }}{{ book.author }}打印书名和作者名。

5.4 配置URL映射

urls.py文件中,配置URL映射关系,例如:

# myapp/urls.py

from django.urls import path

from . import views

urlpatterns = [

path('books/', views.book_list, name='book_list'),

]

上述代码配置了一个名为book_list的URL映射,匹配以/books/开头的URL请求,并转发给名为book_list的视图函数处理。

5.5 启动开发服务器

使用如下命令启动Django开发服务器。

$ python manage.py runserver

在浏览器中访问http://localhost:8000/books/,即可查看所有书籍的列表。

6. 总结

Django是一个功能强大的Web框架,使用它可以快速地开发安全可维护的Web应用程序。Django的MVT设计模式能够有效地帮助开发者进行模块化设计,提高代码重用率和可维护性。

在本文中,我们了解了Django的基本流程和结构,包括安装配置、项目结构、MVT设计模式和开发流程等。希望能对初学者有所启发。

后端开发标签