当前位置: 首页 > wzjs >正文

网站 审批号推广普通话的手抄报

网站 审批号,推广普通话的手抄报,php网站建设教程视频,东莞网站建设定制1. 视图简介 视图负责接收 web 请求并返回 web 响应。视图就是一个 python 函数,被定义在 views.py 中。响应可以是一张网页的 HTML 内容、一个重定向、一个 404 错误等等。响应处理过程如下图: 用户在浏览器中输入网址:www.demo.com/1/100Django 获取网址信息,去除域名和端…

1. 视图简介

  • 视图负责接收 web 请求并返回 web 响应。
  • 视图就是一个 python 函数,被定义在 views.py 中。
  • 响应可以是一张网页的 HTML 内容、一个重定向、一个 404 错误等等。

响应处理过程如下图:

  1. 用户在浏览器中输入网址:www.demo.com/1/100
  2. Django 获取网址信息,去除域名和端口后剩下 URI:1/100
  3. 按照 urlconf 中正则的配置顺序逐一匹配,一旦匹配成功,则调用对应的视图函数
  4. 调用对应的视图函数,接收 request 对象(及正则中获取的值),处理并返回 response 对象

 

2. URLconf

在项目目录下的 settings.py 中通过 ROOT_URLCONF 指定根级 url 的配置:

ROOT_URLCONF = 'ViewDemo.urls'

项目目录下的 urls.py 中的 urlpatterns 是一个包含 url() 实例的列表。一个 url() 对象包括:

  • 正则表达式
  • 视图函数
  • 名称 name

 

1)关联各应用下的 URLconf

应用中创建 urls.py,定义本应用中的 urlconf。如 hero_info 应用目录下的 urls.py:

urlpatterns = [url(r'^$', views.index, name='index'),  # 正则匹配成功时访问index函数url(r'^([0-9]+)/$', views.detail, name='detail'),  # 正则匹配成功时访问detail函数
]

再在项目的 urls.py 中使用 include() 关联对应应用的 urls.py:

urlpatterns = [url(r'^admin/', include(admin.site.urls)),url(r'^hero_info/', include('hero_book.urls', namespace='hero_info')),  # 关联hero_book包下的urls.py
]

使用 include 可以去除 urlconf 的冗余。

注意:django 2.0 起,urls 不支持正则表达式问题。如果需要使用正则,需要导入 re_path:

from django.urls import path, re_pathurlpatterns = [path('admin/', admin.site.urls),re_path(r'^test-(\d+)-(\d+)/', views.test),path('index/', views.index),
]

匹配过程

解析 web 请求地址时,先与主 URLconf 匹配,成功后再用剩余的部分与应用中的 URLconf 匹配。如下示例:

  1. 请求 http://www.demo.cn/hero_info/1/
  2. 匹配部分是 /hero_info/1/
  3. 在 settings.py 中与“hero_info/”匹配成功,再用“1/”与 hero_info 应用的 urls 匹配成功

 

2)URLconf 的编写

  • url 的正则表达式不需要添加一个前导的反斜杠,如应该写作'hero_info/',而不应该写作'/hero_info/'。
  • 每个正则表达式前面的 r 表示字符串不转义。
  • 请求的 url 被看做是一个普通的 python 字符串,进行匹配时不包括 get 或 post 请求的参数及域名。
http://www.itcast.cn/python/1/?i=1&p=new  # 只匹配“/python/1/”部分
  • 若要从 url 中捕获一个值,则要使用正则中的分组。
    • 优先使用命名参数,如果没有命名参数则使用位置参数。
    • 每个捕获的参数都作为一个普通的 python 字符串传递给视图。
url(r'^([0-9]+)/$', views.detail, name='detail')  # 通过位置参数传递给视图
url(r'^(?P<id>[0-9]+)/$', views.detail, name='detail')  # 通过分组名称传递参数给视图函数,本例的参数名称为id

 

3)namespace 反向解析

在 include 中通过 namespace 定义命名空间,用于反向解析。

URL 的反向解析

问题:如果在视图、模板中使用硬编码的链接,在 urlconf 发生改变时,维护是一件非常麻烦的事情。

解决:在做链接时,通过指向 urlconf 中的 namespace 名称,动态生成链接地址。

  • 视图:使用 django.core.urlresolvers.reverse() 函数。
  • 模板:使用 url 模板标签。

 

3. 视图函数&错误视图

视图本质就是一个函数。在应用目录下默认有 views.py 文件,一般视图都定义在这个文件中。

视图的参数:

  • 一个 HttpRequest 实例
  • 通过正则表达式分组获取的位置参数或关键字参数

如果处理功能过多,可以将函数定义到不同的 py 文件中(但不建议)。示例:

# 新建views1.py
from django.http import HttpResponsedef index(request):return HttpResponse("你好")# 在urls.py中修改配置
from . import views1
url(r'^$', views1.index, name='index'),

错误视图

Django 原生自带了几个默认视图用于处理 HTTP 错误。

404 (page not found) 视图

  • 默认的 404 视图将传递一个变量 request_path 给模板,它是导致错误的 url。
  • 如果Django在检测URLconf中的每个正则表达式后没有找到匹配的内容时,将调用 404 视图。
  • 如果在 settings.py 中 DEBUG 设置为 True,那么将永远不会调用 404 视图,而是显示 URLconf。 并带有一些调试信息。

1)在 templates 中创建 404.html:

2)编写 404.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
{{request_path}}
<h1>Oops!该网页不存在..</h1>
</body>
</html>

3)在 settings.py 中修改两个配置:

DEBUG = False  # 取消调试状态
ALLOWED_HOSTS = ['*', ]  # 允许所有主机访问

4)访问不存在的地址:

http://www.dtcms.com/wzjs/419820.html

相关文章:

  • 怎样建立自己的网站站长工具关键词挖掘
  • wordpress页面展示插件龙岩seo
  • 成都市微信网站建设公司网络推广大概需要多少钱
  • 合肥专业做网站公司直接进入网站的代码
  • 做代还的人都聚集在哪些网站最新国内新闻重大事件
  • 阿雷网站建设公司广州网站优化服务商
  • 关于企业网站建设的请示百度人工申诉客服电话
  • 东莞软件seo关键词优化排名推广
  • 石家庄做商城网站的公司百度指数怎么查
  • 人人车网站建设产品网络推广深圳
  • 上海 企业网站建设app 推广
  • 潮州网站建设产品推广计划方案模板
  • 网站上加一个浮动小框怎么做重庆seo技术
  • 天津做网站优化公司seo外包服务方案
  • 潍坊网站建设500吉安seo
  • 集团网站设计方案seo综合查询网站
  • 工信部网站 登陆北京谷歌seo
  • 企商网站建设nba排名最新赛程
  • 资讯门户网站怎么做app注册接单平台
  • 朝阳市网站制作滕州网站建设优化
  • 怎样做慈善教育基金会网站seo外包一共多少钱
  • 宜城市城乡建设局网站备案广州最新新闻
  • 朝阳网络 网站建设网页制作用什么软件做
  • 河北石家庄新闻wp博客seo插件
  • 网站建设有关表格十大搜索引擎地址
  • 网站备案被取消淘宝的关键词排名怎么查
  • 长春长春网站建设公司seo研究中心官网
  • 上海微信小程序网站建设西安高端网站建设
  • 网站建设的教学视频免费数据统计网站
  • win8扁平化网站google seo怎么优化