URL简单梳理
# DEBUG模式:
- 开启debug模式后,修改项目代码时按下ctrl+s可重启项目;
- 项目中出现bug时,浏览器与控制台会打印错误信息;
- 在生产环境中禁止开启DEBUG模式,有很大的安全隐患;
- 将DEBUG设置为False时,必须设置ALLOWED_HOSTS。
- ALLOWED_HOSTS :用来设置以后只能通过这个变量中的IP或域名来进行访问
# 视图函数:
- 第一个参数必须是 request ; book_id 后可添加默认参数。
- 返回值必须是 ‘django.http.response.HttpResponse’ 的子类对象
#(app)front中views.py
from django.http import HttpResponse def index(request):
return HttpResponse('网站首页') def books(requeset,book_id):
text = '图书的ID是:%s' % book_id
return HttpResponse(text) #项目urls.py
from django.urls import path
from front import views urlpatterns = [
#http://127.0.0.1:8000/
path('',views.index),
#http://127.0.0.1:8000/book/1
path('book/<book_id>/',views.books)
]
# urls模块化:
- 每个App的 urls 都放到自己的App进行管理,在App中新建一个 urls.py 文件来存储所有和这个App相关的 子url ,然后在项目的主 urls.py 文件下使用 include 来包含各个App的 urls.py 文件,如:
#项目urls.py
'''
urlpatterns = [
path('book/',include('book.urls'))
]
''' #book.urls为应用程序book的urls.py文件 - ‘App’的 urls.py 中,所有的url匹配也要放在变量 urlpatterns 中,否则找不到;
#App的urls.py
'''
urlpatterns = [
path('/detail/<book_id>/',views.book_detail)
]
''' - 项目的‘url’会根据 urls.py 和App中的 urls.py 进行拼接,注意不能多加斜杆。(得到的URL为:http://.../book/detail/1)
# url命名:
- 为App的‘ url ’命名,防止后期‘url’经常变动。后期反转时使用 name 定义的url名字。前面显示的 login 可变动;
#app的urls.py
'''
path('login/',views.login,name='login')
''' - 存在多个App时,为防止同名的‘url’产生混淆,使用 ‘命名空间 ’app_name 来进行区分;
#App的urls.py文件
'''
app_name = 'front’ #app的名称 urlpatterns = [
path('login/',views.login,name='login')
]
'''反转时使用 命名空间:url名称 进行反转
app的urls.py文件
'''
return redirect(reverse(‘front:login’)) #反转到front应用程序的url页面(name=‘login’的值)。
'''
# 应用(app)命名空间与实例命名空间:
- 一个App可使用多个URL实例进行映射,所以使用命名空间时容易发生混淆;使用 实例命名空间‘namespace’ 来解决该问题
#项目urls.py
'''
path('login1/',include('front.urls',namespace='login1'))
path('login2/',include('front.urls',namespace='login2'))
''' - 反转时使用实例命名空间指定具体的url;
#应用程序urls.py
'''
def idnex(request):
username = request.GET.get('username')
if username:
return HttpResponse('front首页')
else:
#获取当前命名空间
current_namespace = request.resolver_match.namespace
return redirect(reverse('%s:login' % current_namespace))
'''
# include()函数:
- include(module,namespace=None)
- module:子 url 的模块字符串;
- namespace:指定实例命名空间时必须先指定应用命名空间app_name;
- include((pattern_list,app_namespace),namespace=None)
- 函数的第一个参数可以为一个字符串或者一个元组,为元组时第一个参数为App的 url.py 模块的字符串,第二个参数为应用命名空间;
'''
path(('login/',include('front.urls','login'),namespace='book'))
'''
- 函数的第一个参数可以为一个字符串或者一个元组,为元组时第一个参数为App的 url.py 模块的字符串,第二个参数为应用命名空间;
- include(pattern_list) :列表中装 path 或 re_path 。
'''
path('movies/',include([
path(' ',views.movie),
path('list/',views.movie_list),
]))
'''
# re_path:
- 作用比 ‘path’ 强大,写 url 时可使用正则表达式;(无特殊情况时建议使用:path)
- 写正则表达式时使用原生字符串,即以 ‘r’ 开头的字符串;
- 正则表达式使用圆括号定义变量,参数有名字时使用 ?P<参数名字> ,然后在后面添加正则表达式的规则。
'''
re_path(r"^list/(?P<year>\d{4}/$",views.book_list)
'''
# reverse函数:
- 在反转 ur l时,如需添加参数,可传递 kwargs 参数到reverse函数中
#应用urls.py
'''
return redirect(reverse('book',kwargs={'book_id':1,'page':2}))
''' - 如需添加字符串的参数,则必须手动进行拼接
#在没输入关键参数时自动跳转到登录页面,next告诉下一步跳转的位置
'''
return redirect(reverse('login') + "?next=/")
'''
#类似于知乎的首页登录跳转
#知乎网站:https://www.zhihu.com/signup?next=%2F (%2F = /)
#进入时自动跳转到 signup 的url登录页面,后面告知下一步跳转到首页
URL简单梳理的更多相关文章
- C#正则表达式_简单梳理_Emoji表情字符处理
A-最近一直有接触到正则表达式,现对其做简单梳理: private const RegexOptions OPTIONS = RegexOptions.IgnoreCase | RegexOption ...
- 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...
- [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...
- RocketMQ 简单梳理 及 集群部署笔记【转】
一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐量.队列模型的消息中间件的分布式消息中间件. 上图是一个典型的消息中间件收发消息的模型,RocketMQ也 ...
- Memcached概念、作用、运行原理、特性、不足简单梳理(1)
大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过.这都没什么关系,本文旨在从各个角度综合的介绍这种产品,尽量深入浅出,如果能对您现 ...
- SpringSecurity配置,简单梳理
生活加油:摘一句子: “我希望自己能写这样的诗.我希望自己也是一颗星星.如果我会发光,就不必害怕黑暗.如果我自己是那么美好,那么一切恐惧就可以烟消云散.于是我开始存下了一点希望—如果我能做到,那么我就 ...
- 简单梳理JavaScript垃圾回收机制
JavaScript具有自动垃圾回收机制,即执行环境会负责管理代码执行过程中使用地内存. 这种垃圾回收机制的原理很简单:找出那些不再继续使用的变量,然后释放其占用的内存.为此,垃圾收集器会按照固定的时 ...
- 简单梳理下 Vue3 的新特性
在 Vue3 测试版刚刚发布的时候,我就学习了下 Composition API,但没想到正式版时隔一年多才出来,看了一下发现还是增加了不少新特性的,在这里我就将它们一一梳理一遍. 本文章只详细阐述 ...
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考 ...
随机推荐
- 20165305 苏振龙《Java程序设计》第五周学习总结
第七章 Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类. 和某类有关的匿名类就是该类的一个子类,该子类没有明显的用类声明来定义,所以称做匿名类. 和某接口有 ...
- Hue中hive(hive cli)查询结果中显示列名,不带表名
hive cli中显示列名 进入hive cli后 set hive.cli.print.header=true; 之后出现列名,但是带了表名前缀,由于网上没找到资料,于是到官网肉眼扫描所有参数,总算 ...
- MongoDB-Java的两个基本操作Upsert和insertMany
此文只是为了记录几个基本操作,首先Upsert,有多种方法可以进行,但是都需要指定UpdateOptions.upsert(true),其中最简单的办法如下(eqq是一个用来filter的BSON,具 ...
- HTTPS实战之单向验证和双向验证
转载自:https://mp.weixin.qq.com/s/UiGEzXoCn3F66NRz_T9crA 原创: 涛哥 coding涛 6月9日 作者对https 解释的入目三分啊 (全文太长,太懒 ...
- QT -- plan
QT -- 跨平台的 C++ 图形用户界面 应用程序框架 GUI介绍框架项目文件 .pro第一个QT (hello QT)父窗口 和 子窗口的区别(控件,部件,构件)信号 和 槽(信号的处理 ...
- windows与linux ping 显示的ip不一样
DNS修改了一下域名对应的IP后,域名不能访问了,我在windows下ping一下域名,IP没有变过来,还是老的IP.我在linux下又ping了一下域名,是换过了的.这个问题是由windows下的本 ...
- redis安装--转
第一部分:安装redis 希望将redis安装到此目录 1 /usr/local/redis 希望将安装包下载到此目录 1 /usr/local/src 那么安装过程指令如下: 1 2 3 4 5 6 ...
- Com类型
/* VARIANT STRUCTURE * * VARTYPE vt; * WORD wReserved1; * WORD wReserved2; * WORD wReserved3; * unio ...
- sql语句查询结果排序
order by 是用在where条件之后,用来对查询结果进行排序 order by 字段名 asc/desc asc 表示升序(默认为asc,可以省略) desc表示降序 order b ...
- 怎样从外网访问内网Jboss?
本地安装了一个Jboss,只能在局域网内访问,怎样从外网也能访问到本地的Jboss呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Jboss 默认安装的Jboss端口是8080. 实现步骤 下载并 ...