MVT设计模式

请求访问流程:HTTP请求经过URL映射器,到达view层,view层可以从Model层获取数据,再从Template层取得不变的HTML数据,和Model层取得数据组合,最后返回HttpResponse应答。
简单入门教程
创建项目
1. 在终端下,进入准备存放项目的目录下执行:django-admin startproject myproject,此时,目录结构为:
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
wsgi.py
其中:
myproject:项目的根目录
manage.py:一个命令行程序,用来管理Django项目
myproject/settings.py:项目配置
myproject/urls.py:配置项目的URL映射器
myproject/wsgi.py:一个WSGI兼容的Web服务器的入口。
2. Django的项目配置信息需要保存到数据库中,默认使用sqlite3,在myproject/settings.py中设置。
默认配置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
举例:MySQL数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'djangodb', # 库名
'USER':'root',
'PASSWORD':'root',
'HOST':'127.0.0.1',
}
}
设置好数据库的配置文件后,需要执行如下命令初始化数据库。
$ python3 manage.py migrate
3. 创建应用程序
Django中有项目和应用程序的分别,应用程序可以理解为具有特定功能的一些程序,项目可以包含多个应用程序,例如一个商城,可以把订单和商品详细放在两个应用程序中,各自负责不同的功能。 创建应用程序,在myproject目录下执行:
$ python3 manage.py startapp books
整个项目的目录结构如下:
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
wsgi.py
books/
__init__.py
admin.py
apps.py # 注册应用
models.py # 模型层
tests.py # 测试相关代码
views.py # 视图层
migrations/ # 数据库升级产生的文件存放在此目录
__init__.py
4. 第一个Django程序
1)修改myproject/settings.py文件,添加应用程序信息
INSTALLED_APPS = [
'books.apps.BooksConfig', # 添加这行信息
}
2) 定义视图函数:参数是request(HttpRequest),返回值是HttpResponse。
books/views.py文件
from django.shortcuts import render
from django.http import HttpResponse
def hello(request):
return HttpResponse('<h1>你好,世界</h1>')
3) 修改项目的url映射器
myproject/myproject/urls.py
from django.contrib import admin
from django.urls import path, include
import books
from books import urls
urlpatterns = [
path('books/', include(books.urls)), # 函数
path('admin/', admin.site.urls), # 函数
]
4) 增加应用程序下的url映射器
books/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello, name='hello')
]
5) 启动服务器
在项目根目录下执行如下命令:
$ python3 manage.py runserver
6) 访问http://127.0.0.1:8000/books/hello/,可以看到你好,世界的页面。
7) 解释
request先到达myproject/myproject/urls.py的项目URL映射器中,根据path('books/', include(books.urls)),匹配books/,然后请求跳转到books.urls应用程序URL映射器,根据books/urls.py中的path('hello/', views.hello, name='hello'),匹配'hello/',请求跳转到views.hello这个视图函数中,views.hello视图函数处理业务逻辑,返回应答HttpResponse.