Django入门(六)   动态URL

多级url虽然可以在多个app的时候将各个应用进行归类。现在有这么一种情况,就是app01里面的views.py里面定义了大量的函数。这样的话我们势必要在app01的urls.py里也要根据函数的数量编辑绑定信息。一个函数一条绑定的信息的对应写下去。为了避免这种可怕的事情,我们就需要使用动态url来处理这种请求。所谓的动态url就是可以通过正则表达式匹配用户输入的url内容,将url当做参数传递给后端的python函数进行处理。

首先我们在app01应用的views.py文件里新建一个函数dynamic_url()用于将接接收到的url内容进行拼接

/app01/views.py

from django.shortcuts import render
from django.shortcuts import HttpResponse
# Create your views here.

def dynamic_url(request,arg1,arg2):
    return HttpResponse(arg1+arg2)

修改mydjango目录下的urls.py,用正则表达式编辑匹配app01这个以后的匹配规则

/mydjango/urls.py

#!/usr/bin/env python
# coding:utf-8
from django.conf.urls import url,include
from django.contrib import admin
#记得导入app01
from app01 import views
urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^app01/‘, include(‘app01.urls‘)),
    url(r‘^app02/‘, include(‘app02.urls‘)),
    #括号里的内容就是传给dynamic_url的参数,这里表示匹配两个任意数字,并把数字传给函数
    url(r‘^dynamic_url/(\d+)/(\d+)$‘, views.dynamic_url),
    #匹配所有url的规则一定要放在最后
    url(r‘^‘, include(‘app01.urls‘)),
]

注意括号里的内容是以按先后顺序传递给python函数的

下面我们测试一下效果

如上图所致。我们url里面最后的两个数被以参数的形式传入了函数并打印到页面上了。

如果我们对参数传递的顺序有特殊的要求,以往以字典的形式匹配的内容具体对应某个参数我们可以在urls.py文件里匹配url的时候使用?P<arg>关键字来实现,下面我们只修改urls.py就可以了

/mydjango/urls.py

#!/usr/bin/env python
# coding:utf-8
from django.conf.urls import url,include
from django.contrib import admin
#记得导入app01
from app01 import views
urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^app01/‘, include(‘app01.urls‘)),
    url(r‘^app02/‘, include(‘app02.urls‘)),
    # url(r‘^dynamic_url/(\d+)/(\d+)$‘, views.dynamic_url),
    #指定第一个变量传递给函数的arg2参数,第二个变量传递给arg1参数
    url(r‘^dynamic_url/(?P<arg2>\d+)/(?P<arg1>\d+)$‘, views.dynamic_url),
    #匹配所有url的规则一定要放在最后
    url(r‘^‘, include(‘app01.urls‘)),
]

再次刷新刚才的url

在url必变的情况,参数传递的顺序已经改变了。这就是动态url。

时间: 2024-10-30 00:38:58

Django入门(六)   动态URL的相关文章

Django入门(五) &nbsp; 多级URL和默认URL

django中我们发布app01应用的使用的index.html,首先需要在myjango子目录的urls文件中去编辑url的路由     这种情况适用于应用较少的时候.加入我们不只有app01,后面还有很多很多app的时候.如果将这些路由都写入到子目录mudjango目录下的url就显得非常混乱了.这时使用多级url就是一个比较好的解决方案. 首先再创建一个名字叫app02的应用 在命令行下输入 python manager.py startapp app02 第二步.在template目录下

Django中的 动态URL配置

举个例子,一家在线书店会为每一本书提供一个URL,如:/books/243/./books/81196/. 让我们创建第三个视图来显示当前时间和加上时间偏差量的时间,设计是这样的: /time/plus/1/ 显示当前时间+1个小时的页面 /time/plus/2/ 显示当前时间+2个小时的页面 /time/plus/3/ 显示当前时间+3个小时的页面,以此类推. 新手可能会考虑写不同的视图函数来处理每个时间偏差量,URL配置看起来就象这样: urlpatterns = patterns('',

python16_day15【Django入门】

一.Django基本 1.什么是框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演.对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 import socket 2 3 def handle_request(client): 4 5 buf = client.recv(1024) 6 client.send("HTTP

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

(一).简介 简介就不多说了,网上的内容一大堆.总结来说,django是走大而全的路线,写项目超级快,几乎什么都为你考虑到了,你就乖乖照着它的格式来写就行了. 这里来一些基本认知: web应用框架(web application framework)是一种开发框架,用来支持动态网站.网络应用程序以及网络服务的开发. http服务器:用来接受用户的请求,并将请求转发给web应用框架进行处理.web应用框架处理完以后再发送给http服务器,http服务器再返回给用户. 但是,项目真要做大了,djan

Spring Security 动态url权限控制(三)

一.前言 本篇文章将讲述Spring Security 动态分配url权限,未登录权限控制,登录过后根据登录用户角色授予访问url权限 基本环境 spring-boot 2.1.8 mybatis-plus 2.2.0 mysql 数据库 maven项目 Spring Security入门学习可参考之前文章: SpringBoot集成Spring Security入门体验(一)https://blog.csdn.net/qq_38225558/article/details/101754743

django入门 -- 简单流程

django入门 -- 简单流程 这里简单的演示完成一个 django 大概流程,后面会有详细解释 搭建开发环境 以下使用的是 ubuntu 系统 在生产环境中,有的时候,我们开发的项目可能用的是几个不同的 环境,所以通常我们会创建虚拟环境,在虚拟环境中安装我们需要的 配置,这里从配置虚拟环境开始 创建虚拟环境 创建:mkvirtualenv [虚拟环境名称] 删除:rmvirtualenv [虚拟环境名称] 进入:workon [虚拟环境名称] 退出:deactivate 所有的虚拟环境,都位

Python爬虫入门六之Cookie的使用

大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了. 在此之前呢,我们必须先介绍一个opener的概念. 1.Opener 当你获取一个

Django入门(七) 缓存

由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者Redis中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到,并返回 Django的缓存的功能需要在全局设置参数settings.py中设置,在文件中加入如下配置能容 setting.py CACHES = {     'default': {         'B

Django入门笔记【三】

入门笔记翻译整理自:https://docs.djangoproject.com/en/1.8/ *该笔记将使用一个关于投票网络应用(poll application)的例子来阐述Django的用法. Public interface - views. 1. 定义 视图(View)是Django应用中用于实现某一特定功能的Web页面.比如,一个博客可以有博客展示页面,博客创建页面,评论页面. 2. 视图示例 写入代码 1 #polls/views.py 2 3 from django.http