第2章 Django入门

内容来源于《Web接口开发与自动化测试——基于Python语言》虫师编著,如有涉及版权问题,归虫师本人所有。请大家支持虫师的著作:http://www.broadview.com.cn/book/4811
源码下载:https://github.com/defnngj/guest

Django version Python version
1.8 2.7, 3.2, 3.3, 3.4, 3.5
1.9, 1.10 2.7, 3.4, 3.5
1.11 2.7, 3.4, 3.5, 3.6
2.0 3.5+

2.1 Django开发环境

2.1.1 在Windows下安装Django

Django官方网站:https://www.djangoproject.com/download/
Python官方仓库下载地址:https://pypi.python.org/pypi/Django
这两个地址都可以下载。
Django是一个更新非常频繁的Web框架,每个版本直接都会有差异。所以需要注意。

>pip install django==1.10.3

>pip3 install django==1.10.3

>python3 -m pip install django==1.10.3

这三种方法都可以安装django 1.10.3版本。

1.2.2 在Ubuntu下安装Django

安装方法与Windows基本一致。


2.2 开始第一个demo

2.2.1 创建项目与应用

如果已经成功安装了Django,那么在.../Scripts/目录下会多出一个django-admin.exe可执行文件。

  • 创建guest项目
>django-admin startproject guest

项目结构如下:
guest /
|——guest/
|——|——__ init__.py
|——|——settings.py
|——|——urls.py
|——|——wsgi.py
|——manage.py
具体哪个文件对应是干嘛的可以百度。

  • 创建sign应用


    第2章 Django入门_第1张图片
    Django应用目录.png

migrarions/: 用于记录models中数据的变更。
admin.py: 映射models中的数据到Django自带的admin后台。
apps.py: 用于应用程序的配置,在新的Django版本中新增文件。
models.py: Django的模型文件,创建应用程序数据表模型(对应数据库的相关操作)。
tests.py: 创建Django测试用例。
views.py: Django的视图,控制向前端页面显示的内容。

2.2.2 运行项目

..\guest> python3 manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
August 15, 2018 - 11:17:19
Django version 2.1, using settings 'guest.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Django默认通过本机的8000端口来启动项目。打开浏览器,访问:http://127.0.0.1:8000。


第2章 Django入门_第2张图片
Django 2.1默认页面.png

如果端口号被占用,可以修改其他的端口号。

..\guest> python3 manage.py runserver 127.0.0.1:8001

2.2.3 Hello Django!

首先配置guest\settings.py文件,将sign应用添加到项目中。

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sign',
]
......

计划通过/index路径来显示“Hello Django!”。在浏览器中输入:http://127.0.0.1:8000/index。

第2章 Django入门_第3张图片
Django默认页面.png

分析页面没找到的原因:

  • Django在项目guest子目录下通过urls.py文件来定义URLconf。
  • 但是,在urls.py文件中只找到了一个admin/路径的路由配置。
  • 当前URL和index/并没有匹配到。
    所以打开urls.py来添加/index/的路由配置。
from django.contrib import admin
from django.urls import re_path  #这里导入的re_path注意
from sign import views

urlpatterns = [
    re_path('admin/', admin.site.urls),
    re_path('index/$', views.index)
]

配置views.py创建index函数。

from django.http import HttpResponse

# Create your views here.
def index(request):
        return HttpResponse("Hello Django!")

效果如下:


第2章 Django入门_第4张图片
Django字符串.png

2.2.4 使用模板

现在想通过HTML页面代替“Hello Django”字符串。
在sign/目录下创建templates/index.html文件。


    
        Django Page
    
    
        

Hello Django!

修改views.py中的index函数。

from django.shortcuts import render

# Create your views here.
def index(request):
        return render(request, "index.html")

刷新浏览器,结果如下:


第2章 Django入门_第5张图片
Django使用HTML模板.png

2.3 Django工作流

一张流程图告诉你,django的处理流程:


第2章 Django入门_第6张图片
Django处理流程.jpg

需要说明的是,这个处理流程并非Django的完整处理流程,其中最主要的就是缺失了数据层的操作,但是目前并没有涉及数据层的操作,所以先暂时忽略。

2.3.1 URL组成

第2章 Django入门_第7张图片
URL地址.png

URL地址由以下几部分组成:

  • 协议类型:HTTP/HTTPS
  • 主机地址:itest.info,127.0.0.1
  • 端口号:8000
  • 路径:/index/

2.3.2 URLconf

为了给一个应用设计URL需要创建一个Python模块,这个Python模块通常称为URLconf。这个模块包含URL模式(简单的正则表达式)到视图函数(默认views.py文件中的函数)的简单映射。
Python正则表达式:r'^index/$'

通配符 含义
r 字符串前面加“r”是为了防止字符串中出现转义字符
^ 匹配字符串开头;在多行模式中匹配每一行的开头
$ 匹配字符串的末尾;在多行模式中匹配每一行末尾

通过^index/$ 匹配到/index/目录。将请求指向sign应用views.py视图文件中的index函数处理。
Django处理一个请求的过程如下:
1️⃣Django使用的是根URLconf模块。这个值通常是通过ROOT-URLCONF设置(在settings.py文件中)。
2️⃣Django加载URLconf模块(urls.py文件),并寻找可用的urlpatterns。
3️⃣Django依次匹配每个URL模式,在与请求的URL匹配的第一个模式处停下来。
4️⃣一旦其中一个正则表达式匹配上,则Django将请求指向对应的视图函数处理。
5️⃣如果没有匹配到正则表达式,或者过程中抛出一个异常,则Django将调用一个适当的错误处理视图。

2.3.3 views视图

接下来的请求的处理就到了.../sign/views.py文件中的index视图函数(是一个简单的Python函数,它接受Web请求并且返回Web响应)。响应可以是任何内容。

2.3.4 templates模板

打开.../sign/templates/index.html文件。作为Web框架,Django需要一种非常便利的方法动态地生成HTML。最常见的做法是使用模板。当然,可以使用CSS、JavaScript技术等。


2.4 MTV开发模式


你可能感兴趣的:(第2章 Django入门)