博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django:视图views(一)
阅读量:4709 次
发布时间:2019-06-10

本文共 3666 字,大约阅读时间需要 12 分钟。

1、环境搭建

django中,视图负责与web请求进行交互

视图本质上是一个Python函数,定义在booktest/views.py。通过django1/urls.py路由到该视图中。

首先经过创建工程-命令行进入django3-配置数据库-创建数据库django3-创建应用-把booktest应用写入setting文件,下面开始配置路由:

booktest/views.py

from django.shortcuts import renderfrom django.http import HttpResponse# Create your views here.def index(request):    print('view hello')           #在命令行里输出    return HttpResponse('haha')   #在浏览器输出

booktest目录下创建urls.py

booktest/urls.py

from django.conf.urls import urlfrom . import viewsurlpatterns = [    url('^$',views.index)]

在最外层的urls.py中引入子urls路由

django3/urls.py

urlpatterns = [    url(r'^admin/', include(admin.site.urls)),    url('', include('booktest.urls'))]

启动服务器。在浏览器端输入 http://127.0.0.1:8080/booktest

可以看到

总体的路由如下:(settings.py入口)

 2、路由的过程

当我们在URL中写入的时候

首先,解析器会把前面的协议、地址、端口号全部去掉。只剩下booktest一段。

进行匹配,与settings.py中的ROOT_URLCONF变量所对应的值进行匹配

对应django3/urls.py

显示了待匹配的url模板。这里指示如果待匹配的内容有”admin/”的话,使用admin.site.urls

另外如果待匹配的内容有”booktest/”,使用booktest.urls。对应booktest/urls.py

 

进入了booktest/urls.py还有urlpatterns待匹配。这里匹配的是“booktest/”后面的内容

因为待匹配的是^$,空字符串。所以实际上booktest后面为空,才能匹配上。

如果加上一句话

urlpatterns = [    url('^$',views.index), # 路由到views.py中的index()函数    url('^index', views.index)]

表示可以匹配booktest/”或“booktest/index”。无论是哪个匹配上,都跳转到views.py中的index()函数。

要从url中捕获一个值。需要在该值的周围添加一个小括号。并在视图函数中,通过后续的参数进行捕获。比如:

booktest/urls.py

urlpatterns = [    url('^$',views.index), # 路由到views.py中的index()函数    url('^index', views.index),    url('^(\d+)$', views.integer)]

booktest/views.py

def integer(request, id):    return HttpResponse('integer:%s' % id)

3、命名参数

在URL_PATTERNS中给要捕获参数指定变量名。在视图中通过对应的变量名捕获参数。

假设要访问  http://127.0.0.1:8080/booktest/9/14/2018  的时候,能够捕获到年月日。

booktest/urls.py

urlpatterns = [    url('^$',views.index), # 路由到views.py中的index()函数    url('^index', views.index),    url('^(\d+)$', views.integer),    url('^(?P
\d+)/(?P
\d+)/(?P
\d+)$', views.date),]

booktest/views.py

def date(request, p1, p2, p3):    return HttpResponse('year: %s, month: %s, date:%s' % (p1, p2, p3))

 

4、命名空间和名称

include函数可以添加第二个参数,namspace,表示命名空间

urlpatterns = [    url(r'^admin/', include(admin.site.urls)),    url('booktest/', include('booktest.urls', namespace='booktest'))  # 路由到booktest/urls.py]

url函数可以添加第三个参数,name。表示名称

urlpatterns = [    url('^$',views.index), # 路由到views.py中的index()函数    url('^index', views.index, name="index"),]

使用namspacename可以在模板中去除关于urlconf的冗余信息。

参考前面的例子

templates/booktest/hero.html

这样即使修改了url中的路径,也不需要同时修改模板中的代码了。

5、404视图

当访问一个不存在的网页  的时候,浏览器会显示

这个是django内部定义的一个404的视图。当网页找不到的时候,就会自动跳转到该视图中。

下面可以尝试修改这个404视图。templates目录下创建一个文件404.html

templates/404.html

    
Document

这里什么东西都没有!!

在配置文件中把模板的路径加上

django3/settings.py

TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS': [os.path.join(BASE_DIR, 'templates')],        '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',            ],        },    },]

关闭调试信息。并允许所有主机都可以访问该网站

DEBUG = FalseALLOWED_HOSTS = ['*',]

 

6、500视图

500是指服务器错误。

当服务器的代码出现运行时的bug的时候,会显示500错误

templates目录下创建500.html

    
Document

服务器内部出现错误!!

在视图的代码中随便加点错误

booktest/views.py

def index(request):    print('hello')    花洒打机佬咖啡馆哈快点江老师更好看了解导师    return HttpResponse('hello')

 

 

为了后面的代码调试方便,还是要把调试功能打开

DEBUG = TrueALLOWED_HOSTS = []

 

转载于:https://www.cnblogs.com/kumata/p/9672255.html

你可能感兴趣的文章
Adobe® Reader®.插件开发
查看>>
【POJ 3461】Oulipo
查看>>
Alpha 冲刺 (5/10)
查看>>
使用Siege进行WEB压力测试
查看>>
斑马为什么有条纹?
查看>>
android多层树形结构列表学习笔记
查看>>
Android_去掉EditText控件周围橙色高亮区域
查看>>
《构建之法》第一、二、十六章阅读笔记
查看>>
Git Stash用法
查看>>
sql server 2008学习8 sql server存储和索引结构
查看>>
Jquery radio选中
查看>>
memcached 细究(三)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>
String类的深入学习与理解
查看>>
OnePage收集
查看>>
yahoo的30条优化规则
查看>>
[CCF2015.09]题解
查看>>