URL(Uniform Resoure Locater)统一资源定位符,是对可以从互联网上得到资源位置和访问方法的一种简洁形式,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器的处理方式。访问者通过url访问网址,服务者通过设置url让访问者进行访问 。

1.URL格式

schema://host[:port#]/path/.../[?query-string][#anchor]

  schema           指定使用的协议(例如:http、https、ftp)

  host              Http服务器的IP地址或者域名(例如:127.0.0.1、www)

  port              端口号,http协议默认端口是80(例如:8000)

  path              访问资源的路径

  query-string        发送给http服务器的数据

  anchor           锚点

2.URL的路径查找

当一个请求来到时,

 1).首先进入项目目录下的urls.py文件(主urlconf模块)中查找路由规则,

 2).项目目录下的urlconf模块定义了urlpatterns变量,

 3).urlpatterns是一个(django.urls.path,django.urls.re_path对象)列表,

 4).Django按顺序运行每个url模式,在第一个匹配的模式停止,

 5).一旦匹配,Django导入并调用给定的视图,

 6).如果中间没有匹配到或者出错,将返回404错误

3.path与re_path

在Django2.0代码实现中,主要的变化是新增了 django.urls.path 函数,它允许使用一种更加简洁、可读的路由语法。re_path和path的作用都是一样的。只不过re_path使用正则表达式来写url,其基本规则为

path(route/<xx>/, views, kwargs=None, name=None)

  route         匹配 URL 的准则。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的               项,直到找到匹配的项

 <xx>        使用尖括号(<>)从url中捕获值,包含一个转化器类型,如:str、int、slug、uuid、path

  views         视图函数。当前面的url匹配成功后,就会调用该视图函数

  kwargs       默认参数,传递一个Python 字典作为额外的参数传递给视图函数

  name         默认参数,为 URL 取名,方便 Django 的任意地方引用

使用path的例子:视图函数index中含有num参数

path("index/<int:num>", views.index, name="index")

使用re_path的例子:视图函数message中含有year和month参数

re_path("message/(?P<year>\d{4})/(?P<month>[1-9]|1[0-2])", views.message, name="message")

4.路由基本配置

方法一:在主目录urls.py文件中配置

1).在项目目录下新建views.py文件,用来编辑视图函数

from diango.http import HttpResponse

def index(request, num):
return HttpResponse('%num期学生的主页' %num)

2).在项目目录下的urls.py编辑规则

from django.contrib import admin
from django.urls import path
from . import views urlpatterns = [
path('index/<int:num>', views.index, name="index")
]
方法二:在应用urls.py文件中配置

当视图越来越多时,需要配置多个url,写在一个主目录urls.py文件中会容易造成混淆,因此在各自的app应用中新建urls.py文件并配置url,然后通过"inclue"方法与主目录urls.py建立连接,例如新建了student应用

1).在student中的views.py编辑视图

from diango.http import HttpResponse

def login(request):
return HttpResponse('学生登录页面')

2).在student中的urls.py配置路由

from django.urls import path
from . import views
app_name = "student" urlpattern = [
path('login/', views.login, name="login")
]

3).在项目目录下的urls.py建立连接

from django.contrib import admin
from django.urls import inclue urlpattern = [
path('admin/', admin.site.urls),
path('student', inclue('student.urls'))
]

Django入门--url路由基本配置的更多相关文章

  1. Django 02 url路由配置及渲染方式

    Django 02 url路由配置及渲染方式 一.URL #URL #(Uniform Resoure Locator) 统一资源定位符:对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是 ...

  2. 3/19 Django框架 url路由配置及模板渲染

    3/19 Django框架 url路由配置及模板渲染 1.路由分配 URL(Uniform Resoure Locato):统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示, ...

  3. Django之url路由

    Django之url路由 url路由介绍 url路由是关联url及其视图函数关系的过程. 作用就是使views里面处理数据的函数与请求的url建立映射关系 url路由配置 Django的url路由配置 ...

  4. django中url路由配置及渲染方式

    今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 ...

  5. Django的URL路由系统

    一. URL配置 URL配置就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图之间的映射表.你就是以这种方式告诉Django,对于哪个URL调用的这段代码. 基本格式 from ...

  6. Django之URL路由系统

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

  7. Django之URL(路由系统)用法

    路由系统 路由系统概念 简而言之,路由系统就是路径和视图函数的一个对应关系.django的路由系统作用就是使views里面处理数据的函数与请求的url建立映射关系.使请求到来之后,根据urls.py里 ...

  8. Django的URL路由基础

    一.概述 URL路由在Django项目中的体现就是urls.py文件,这个文件可以有很多个,但绝对不会在同一目录下.实际上Django提倡项目有个根urls.py,各app下分别有自己的一个urls. ...

  9. Django模板及路由的配置

    学习内容: (1)路由的配置 (2)模板的介绍 (3)模板显示数据 一.路由的配置 以上一篇文章的名字Booketest项目,有一个子模块demo1进行讲解. 1.首先在Booktest项目下的同名子 ...

随机推荐

  1. POJ 2002 Squares【值得摸索的一道二分+点旋转】

    id=2002">Squares 很好的一道二分,事实上本来我是没有思路的,看了基神的题解之后才似乎明确了点. 题意:给出最多有1000个点,问这些点能够组成多少个正方形 分析:先想想 ...

  2. POJ 2762--Going from u to v or from v to u?【scc缩点新建图 &amp;&amp; 推断是否是弱连通图】

    Going from u to v or from v to u? Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15755 ...

  3. Xcode6+Cocos2d-x真机调试 报错

    眼下真机调试时遇到下面问题. Undefined symbols for architecture arm64: "_png_get_io_ptr", referenced fro ...

  4. PlayerPrefs存储Vector3等结构数据

     孙广东   2016.3.31 之前有网友询问这个问题, 当时我仅仅是 提供了一个思路, 使用json序列化.反序列化. 以下就写出两种(都是仅仅能变成字符串) 1.json的序列化.反序列化方 ...

  5. Linux内核OOM机制的详细分析【转】

    本文转载自:http://blog.csdn.net/liukuan73/article/details/43238623 Linux内核根据应用程序的要求分配内存,通常来说应用程序分配了内存但是并没 ...

  6. vs2013+ffmpeg开发环境搭建【转】

    本文转载自:http://blog.csdn.net/spaceyqy/article/details/43115391 每当看到配环境,我就泪流满面,好吧,闲话不多说,进入正题. 1.去官方下载ff ...

  7. python 下串口数据的读取,解析,和保存-

    #!/usr/bin/python # -*-coding: utf-8 -*- import serial import threading import binascii from datetim ...

  8. getElementsByName使用

    查了下手册,getElementsByName()不能提取没有name属性的标签.div标签本身没有name属性,所以不能被提取.有name标签的主要是各种input标签,所以默认情况下getElem ...

  9. Vue组件的三种调用方式

    最近在写fj-service-system的时候,遇到了一些问题.那就是我有些组件,比如Dialog.Message这样的组件,是引入三方组件库,比如element-ui这样的,还是自己实现一个?虽然 ...

  10. 第八周读书笔记(人月神话X月亮与六便士)——到底什么才是一个程序员的自我修养?

    写了这么久的读书笔记,涉及到问题大多是一些如何把软件工程做好,如何把自己的职业生涯做好.但总感觉逻辑链上缺了一环,亦即:我们为什么要把软件工程做好,我们成为一名优秀的职业生涯的意义到底在于什么?我觉得 ...