一.基本格式

from django.conf.urls import url
from . import views
#循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,
   就不再往下循环了,并给函数传一个参数request,和wsgiref的environ类似
    ,就是请求信息的所有内容
urlpatterns = [
     url(正则表达式, views视图函数,参数,别名),

]
参数说明 

1.正则表达式:一个正则表达式字符串

2.views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串

3.参数:可选的要传递给视图函数的默认参数(字典形式)

4.别名:一个可选的name参数
注意事项
1.urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续。

2.若要从URL中捕获一个值,只需要在它周围放置一对圆括号(分组匹配)。

3.不需要添加一个前导的反斜杠(也就是写在正则最前面的那个/),
  因为每个URL 都有。例如,应该是^articles 而不是 ^/articles。

4.每个正则表达式前面的'r' 是可选的但是建议加上。

5.^articles&  以什么结尾,以什么开头,严格限制路径

二.分组命名匹配

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    #注意正则匹配出来的内容是字符串,即便是你在url里面写的是2003数字,匹配出来之后也是字符串

   url(r'^articles/(\d{4})/$', views.year_archive),#year_archive(request,2003),
      小括号为分组,有分组,那么这个分组得到的用户输入的内容,就会作为对应函数的位置参数传进去,
      别忘了形参要写两个了,明白了吗?
    url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
      #某年的,(?P<year>[0-9]{4})这是命名参数(正则命名匹配还记得吗?),
       那么函数year_archive(request,year),形参名称必须是year这个名字。
       而且注意如果你这个正则后面没有写$符号,即便是输入了月份路径,也会被它拦截下拉,因为它的正则也能匹配上
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
        #某年某月的
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
        #某年某月某日的
]
# urls.py中
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^blog/$', views.page),
    url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
]

# views.py中,可以为num指定默认值
"):
    pass
复制代码

三.分发 ( include)

  1.分发过程

①主文件中的 urls.py

② app文件中的 urls.py

③ settings.py文件中添加 app02

四.参数

  1.  从 .html  传到  view.py

在  .html  中  1  2  3  作为参数

<ul>
    <li><a href="{% url 'articles' 1 %}">第1页</a></li>
    <li><a href="{% url 'articles' 2 %}">第2页</a></li>
    <li><a href="{% url 'articles' 3 %}">第3页</a></li>

</ul>s

在  urls.py  文件中  参数要用小括号  里面是正则表达式  通过函数传送

url(r'^articles/(\d{1})/',views.articles,name='articles'),

在  view.py  文件中   通过函数传过来
def articles(request,page_number):

    s = '这是第' + page_number +'页的所有文章'
    return HttpResponse(s)

 2.  从view.py   传到  .html

      ①. 在view.py  文件中

  ②.  在  .html  文件中

五.别名 ( URL的反向解析)(软编码)

  解决解决网址更换带来的不便

在urls.py文件中

url(r'^index', views.home, name='home'),  # 给我的url匹配模式起名(别名)为 home,别名不需要改,路径你就可以随便改了,
                            别的地方使用这个路径,就用别名来搞

在 .html 文件中(不管文职如何改变,在.html中都不需要改变)

<body>

<a href="{% url 'home' %}">asdf</a>

<form action="{% url home' %}">

</form>
<a href="{% url 'home' %}">asdf</a>
</body>

在   view.py  中
先引入
from django.urls import reverse

def login(request):
    if request.method == 'POST':
        url = reverse('home')
        print(url)
        return redirect(url)   #重定向

    return render(request,'login.html')

六.重定向( redirect 响应)

    给浏览器一个  30x 的状态码

重定向原因:
(1)网站调整(如改变网页目录结构);
(2)网页被移到一个新地址;
(3)网页扩展名改变(如应用需要把.php改成.Html或.shtml)。
        这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户      得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的
        网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。

示例
view文件中

from django.shortcuts import render,HttpResponse,redirect

def index(request):
      return redirect('/base/')

def base(request):
     dic = {'name': 'chao'}
     return render(request,'base.html',dic)
urls.py文件中

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    # url(r'^admin/', admin.site.urls),
    url(r'^$', views.index),
    url(r'^base/', views.base),
]
301和302的区别。

  301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到    一个新的URL地址,这个地址可以从响应的Location首部中获取
  (用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。

  他们的不同在于。  301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),      搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;

  302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,    搜索引擎会抓取新的内容而保存旧的网址。 SEO302好于301

七.请求 与 响应 的常用方法

from django.shortcuts import render,HttpResponse,redirect

# Create your views here.

def index(request):
  #请求方式
    print(request.method)  #获取请求方式
    print(request.GET)     #获取get请求的所有数据  字典
    print(request.POST)     #获取post请求的所有数据 字典
    # print(request.GET.get())     #字典取值
    # print(request.POST.get())     #字典取值
    print(request.path)     # /index/ #路径
    print(request.get_full_path())     # /index/?a=1&b=2  路径带参数
    # print(request.META)     # 请求头所有信息的一个大字典
    print(request.META['HTTP_USER_AGENT'])     # Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36

  #响应方式
    #① HttpResponse(字符串)
    # return HttpResponse('ok')
   # ②render 返回页面
     # ③redirect 重定向
   return redirect('/base/')

八.静态文件配置方式

  1

  2

												

day052 django第三天 url和视图的更多相关文章

  1. Django基础三之路由、视图、模板

    Django基础三之路由.视图.模板 目录 Django基础三之路由.视图.模板 1. Django 请求和返回周期 1.1 路由层之路由匹配 1.2 有名分组 1.3 无名分组 2. 反射解析 3. ...

  2. 【django基础补充之URL,视图,模版】

    一.url路由配置 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代 ...

  3. Django - 环境搭建、url、视图、模板、标签、过滤器

    (一).简介 简介就不多说了,网上的内容一大堆.总结来说,django是走大而全的路线,写项目超级快,几乎什么都为你考虑到了,你就乖乖照着它的格式来写就行了. 这里来一些基本认知: web应用框架(w ...

  4. <Django> MVT三大块之view(视图)

    1.视图简介 作用:接受web请求,返回web响应 本质:一个函数,定义在views.py文件中(定义在其他地方也行,约定俗成) 流程:(如果匹配不到,报一个404错误)-----结果返回http r ...

  5. Django学习笔记之URL与视图

    视图 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了这个http请求的所有信息,其中包括携带的参数以及一些头部信 ...

  6. 第三章 URL与视图

    配置文件两种方式详解 先讲两种直接传参: 直接简单传参 app =Flask(__name__) app.config['DEBUG']=True app.config.update( DEBUG=t ...

  7. Django学习笔记之URL与视图cookie和session

    cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  8. Python+Django+SAE系列教程9-----Django的视图和URL

    第三.四.五章介绍的就是Django中MVC的视图.模板.模型了. 首先来看视图(view),在用Django生成的站点目录中,创建一个view.py文件,这个文件開始是空的.然后我们输入下面内容: ...

  9. 一.rest-framework之版本控制 二、Django缓存 三、跨域问题 四、drf分页器 五、响应器 六、url控制器

    一.rest-framework之版本控制 1.作用 用于版本的控制 2.内置的版本控制 from rest_framework.versioning import QueryParameterVer ...

随机推荐

  1. 51Nod - 1384 正常解法

    这个是正常解法 #include<stdio.h> #include<string.h> #include<math.h> #include<time.h&g ...

  2. 文献导读 | A Pan-Cancer Analysis of Enhancer Expression in Nearly 9000 Patient Samples

    Chen, H., Li, C., Peng, X., Zhou, Z., Weinstein, J.N., Liang, H. and Cancer Genome Atlas Research Ne ...

  3. linux软件管理之概述

    软件包管理 ====================================================================================安装/查询/卸载 一 ...

  4. SQL SERVER 连接查询(join...on...)

    SQL SERVER联结查询包含inner join,left join,right join,outer join (on)四种. [inner join]:行数为满足条件n*m,并且on的条件对两 ...

  5. ES6中export与export default的区别

    首先要知道export,import ,export default是什么 ES6模块主要有两个功能:export和importexport用于对外输出本模块(一个文件可以理解为一个模块)变量的接口i ...

  6. 通用Mapper环境下,mapper接口无法注入问题

    写了一个mapper接口 package com.nyist.mapper; import com.nyist.entity.User; import tk.mybatis.mapper.common ...

  7. 【PAT】我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...

  8. Win10系列:C#应用控件基础12

    TextBlock控件 TextBlock控件是应用程序开发过程中经常使用的控件之一,它的主要功能是显示一段只读的文本内容.开发者可以使用TextBlock控件来显示提示信息,还可以根据需求将显示的提 ...

  9. SQL Update 语句详解

    SQL Update 语句详解   Update 语句 Update 语句用于修改表中的数据. 语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 Person: L ...

  10. html 入门 "地表最强"干货 你值得拥有

    # 入门 ## 一.前端三剑客 #### html ```完成页面架构的搭建文件: .html``` #### css ```完成页面样式布局(装修)文件: .css``` #### js ```完成 ...