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设计模式和开发流程等。希望能对初学者有所启发。