上一篇博文已经成功安装了python环境和Django,并且新建了一个空的项目.接下来就可以正式开始进行Django下
的Web开发了.首先进入项目的主目录:
`cd ./DjangoLearn/hollow_world`
新建一个app名字为'myBlog':
`python manage.py startapp myBlog`
新建完成之后,可以看到当前目录多了一个叫myBlog的文件目录.

.

1 注册app

接下来我们编辑'hollow_world'目录下的setting.py文件.找到'INSTALLED_APPS'的这个list.在最后添加一行,注册我们新建的app:


'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myBlog',#在项目中注册myBlog这个app

进入myBlog目录会发现里面有两个文件目录和一些'.py'结尾的python文件.

2 function view

我们首先编辑一下'views.py'写一个方法,来实现让浏览器输出'Hollow world!':

from django.shortcuts import render
from django.http import HttpResponse#导入HttpResponse对象 # Create your views here.
def hollow_world(request):
if request.method=='GET':
return HttpResponse('Hollow world!')
else:
return HttpResponse('Hollow world fiale')

上面的代码实际上是定义了一个方法(function),功能是:当接收到一个HTTP请求时,先判断一下请求的方式是不是'GET',如果是,就返回一个用'Hollow world!'这个字符进行初始化的HttpResponse对象(在这里Hollow world会在浏览器访问时显示在页面上).Django官方把这种直接用def关键字定义方法来处理http请求的方式称为function view。

前面注册了app,也定义完了function是不是就可以了启动服务访问呢?并不是,我们还需要进行路由的映射才行.

3 urls.py

编辑'hollow_world'文件目录下的urls.py 文件:

from django.contrib import admin
from django.urls import path
from myBlog.views import hollow_world#引入上面编写的hollow_world()方法 urlpatterns = [
path('admin/', admin.site.urls),
path('',hollow_world),#将路由映射到hollow_world()这个function上
]

到这里可以说是万事具备,只欠东风了.在我们的项目文件目录下启动服务:

python manage.py runserver 8080

服务正常启动如下图:

.

在浏览器中输入:127.0.0.1:8080进行访问,就能看到'Hollow world! '了!

到这里可以算是完成了一次:

用户访问浏览器-->浏览器收到用户请求并且响应-->浏览器渲染服务器的响应

的一个完整过程.


现在概括一下django web的 一般步骤:

第一步:用`django-admin startproject`命令创建项目。
第二步: 用`python manager.py startapp`创建app。
第三步: 在项目的`setting.py` 文件里注册app
第四步: 在app文件目录下的`view.py`里编写视图函数.
第五步:修改项目文件的`urls.py`文件,进行路由映射,然后就可以启动服务访问了!

4 class-based view

上文中编写views.py里的视图函数用的是function view的方式先判断http请求的方式然后再做对应的处理,在业务逻辑较复杂时代码可读性不是很好。在实际开发中,为了避免频繁的判断http请求方式,和提高代码的可读性,一般采用class-based view 的方式来处理http请求。关于class-based view的介绍请看Django官方文档.

用class-based view 的方式来实现让浏览器输出'Hollow world!',views.py的代码如下:

from django.shortcuts import render
from django.views import View #导入View这个基础类
from django.http import HttpResponse
# Create your views here. class HollowView(View):
"""docstring for HollowView."""
def get(self,request):
return HttpResponse('Hollow world!')

要使用class-based view 必须要:

 from django.views import View #导入View这个基础类

所有自定义的视图类(在这个例子中是HollowView)必须是View的子类。也就是说,我们在定义自己的视图类的时候,必须继承View这个类。

上面我们修改了views.py,接下来是修改项目文件目录下的urls.py:

from django.contrib import admin
from django.urls import path from myBlog.views import HollowView#导入HollowView urlpatterns = [
path('admin/', admin.site.urls),
path('',HollowView.as_view()),
]

在使用HollowView这个视图类之前必须先导入:

from myBlog.views import HollowView#导入HollowView

这里的HollowView.as_view()调用了HollowView的as_view()方法是因为Django的路由是把http请求映射到一个可调用的方法上,而HollowView是一个视图类,不是可调用的方法。as_view()是视图类的一个class function,作用是创建一个视图类的实例,并且调用该实例的dispatch()方法,dispatch()方法会根据传入的http的请求方式去匹配对应的方法进行请求的处理(在HollowView中我们只定义了用于处理http请求方式为GET的处理方法)。

5 urls.py 使用include()

在开发中,一个Django项目下可能不止一个app,如果每定义一个视图类就都要修改项目文件的urls.py难免会出错。实际上我们可以在每个app文件目录下新建一个urls.py文件。django为我们提供了一个include()方法,利用include()方法,可以让项目文件目录的urls.py包含app文件目录下的urls.py,阅读项目文件的urls.py的注释部分,你会发现官方也提倡我们这么做。就以当前项目作为例子,项目文件目录的urls.py内容为:

from django.contrib import admin
from django.urls import path,include
# from myBlog.views import HollowView urlpatterns = [
path('admin/', admin.site.urls),
path('blog/',include('myBlog.urls')),#当请求的url是以‘blog/’开头时,则去Blog这个app下的`urls.py`进行匹配。
]

myBlog 文件目录下的的urls.py内容为:

from django.contrib import admin
from django.urls import path from myBlog.views import HollowView urlpatterns=[
path('',HollowView.as_view()),
]

执行python manage.py runserver服务启动后,我们访问127.0.0.1:8000/blog就可以看到页面上输出了‘Hollow world!’

最后我们来概括一下Django 的Web开发的一般步骤:

第一步:用`django-admin startproject`命令创建项目。
第二步: 用`python manager.py startapp`创建app。
第三步: 在项目的`setting.py` 文件里注册app
第四步: 在app文件目录下的`view.py`里编写视图函数(实际开发中尽量使用class-based view).
第五步:在app文件目录下新建一个`urls.py`文件,并且修改项目文件的`urls.py`文件,进行路由映射(推荐使用项目目录`urls.py`中使用`include()`方法指向app中`urls.py`的方式)

下一篇文章内容是关于django form的构造,使用以及template的使用

Django 基础二(View和urls)的更多相关文章

  1. day 66 Django基础二之URL路由系统

    Django基础二之URL路由系统   本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...

  2. day 53 Django基础二之URL路由系统

    Django基础二之URL路由系统   本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...

  3. Django基础二静态文件和ORM

    Django基础二静态文件和ORM 目录 Django基础二静态文件和ORM 1. 静态文件 1.1 静态文件基本配置: 1.2 静态文件进阶配置 2. request参数 3. Django配置数据 ...

  4. Django基础二之URL路由系统

    一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这 ...

  5. 02.Django基础二之URL路由系统

    一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这 ...

  6. Django基础(二):环境配置

    前戏 WEB框架简介 具体介绍Django之前,必须先介绍WEB框架等概念. web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子. 一般web框 ...

  7. python 自动化之路 day 19 Django基础[二]

    Django - 路由系统 url.py - 视图函数 views.py - 数据库操作 models.py - 模板引擎渲染 - HttpReponse(字符串) - render(request, ...

  8. Django基础,Day2 - 编写urls,views,models

    编写views views:作为MVC中的C,接收用户的输入,调用数据库Model层和业务逻辑Model层,处理后将处理结果渲染到V层中去. polls/views.py: from django.h ...

  9. python django基础二URL路由系统

    URL配置 基本格式 from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数 ...

随机推荐

  1. C++判断字符串是否为空的一个小问题

    刚才visual studio下处理一个函数字符串入参,判断入参字符串是否为空有点小问题. 接口函数声明是这样的:SHORT GETWFSINFPINKEYDETAIL(LPCTSTR strKeyN ...

  2. SVD的概念以及应用

    第十四章 利用SVD简化数据 一.引言 SVD的全称是奇异值分解,SVD的作用是它能够将高维的数据空间映射到低维的数据空间,实现数据约减和去除噪声的功能. SVD的特点主要有以下几个方面: 1.它的优 ...

  3. Java面向对象进阶篇(内部类)

    一. 概念 大部分时候,类被定义成一个独立的程序单元.有时候把一个类放在另一个类内部定义,这个类被称为内部类,包含内部类的类也被称为外部类. 内部类的主要作用: 内部类提供良好的封装,可以把内部类隐藏 ...

  4. 架构之高可用性(HA)集群(Keepalived)

    Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭 ...

  5. windows下安装mysql驱动mysql-python

    Windows下直接pip安装会出错 解决方案 到Python Extension Packages for Windows - Christoph Gohlke 下载MySQL_python‑1.2 ...

  6. 第6次结对作业--郑锦伟&古维城

    第6次结对作业 在线英语学习平台客户端原型 1.结对成员 郑锦伟 2015034643034 古维城 2015034643033 2.原型设计工具实现-Photoshop 3.需求分析 使用NABCD ...

  7. 花生日记_花生日记APP下载_花生日记邀请码

    花生日记 国内领先的社交电商导购分享平台. 独创社交电商3+模式,社交+电商+社群,上线1个月注册用户超百万.合作商家涵括各个类目以及平台.为数万宝妈提供月收入3000以上兼职收入. 微信扫描下方二维 ...

  8. 主成分分析PCA详解

    转载请声明出处:http://blog.csdn.net/zhongkelee/article/details/44064401 一.PCA简介 1. 相关背景 上完陈恩红老师的<机器学习与知识 ...

  9. dmraid 用法

    dmraid 全名为设备对应器磁盘阵列(Device Mapper RAID),利用Linux内核提供的设备对应器(Device Mapper)机制 ,为多种磁盘阵列设备提供磁盘阵列的设备文件,让用户 ...

  10. 【阿里聚安全·安全周刊】Python库现后门 可窃取用户SSH信息|Facebook再曝300万用户数据泄露

    本周七个关键词:Python库现后门丨Facebook再曝数据泄露丨加密协议被曝严重漏洞丨英国报摊将出售"色情通行证"丨HTTPS的绿色锁图标丨机器学习和预测应用的API丨Ecli ...