Django 中url补充以及模板继承
Django中的URL补充
默认值
在url写路由关系的时候可以传递默认参数,如下:
url(r'^index/', views.index,{"name":"root"}),
这样在视图函数中,就可以获取这个默认参数name:
def index(request,name):
print(name)
return HttpResponse("%s is OK" %name)
命名空间
通过下面例子理解:

在项目的urls里写入如下代码:
urlpatterns = [
url(r'^a/',include("app01.urls",namespace="author"))
]
在app的urls里写入如下代码:(注意高亮部分必须有)
app_name = "app01"
urlpatterns = [
url(r'^index/',views.index,name="index")
]
最后在views视图函数中写入如下代码:
from django.urls import reverse def index(request):
v = reverse("author:index")
print(v)
return HttpResponse("is ok")
当访问页面


关于获取用户请求信息
我们在视图函数中写的函数中都加了一个request参数,我们可以通过from django.core.handlers.wsgi import WSGIRequest 导入之后通过request.environ查看详细的信息
而request.environ是一个字典我们循环之后打印:
for k,v in (request.environ).items():
print(k,v)
则可以看到整个请求头的信息
模板继承

如果自己的网站中每个页面都有上面这个部分,如果我们在每个页面都重复写这段代码就会很麻烦,并且改动起来也需要每个都改动,为了这种需求,模板继承可以解决这个问题
把相同的东西写入到模板中,如果某个部分不同则:
{% block content(这里是自定义名字) %}{% endblock %}
而在要继承模板的代码中首先:
{% extends "tp.html" %} 表示要继承的模板
{% block content(这个名字和在模板中定义的名字保持一致) %}
<h1>用户管理</h1>
{% endblock %}
这样就继承了模板中的内容
具体代码如下:
模板中代码如下tp.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="/static/common.css">
</head>
<body>
<div class="pg-header">
我的网站
</div>
{% block content %}{% endblock %}
</body>
</html>
tp1.html继承tp.html代码如下:
{% extends "tp.html" %}
{% block title %}
主机管理
{% endblock %}
{% block content %}
<h1>用户管理</h1>
{% endblock %}
tp2.html继承tp.html,代码如下:
{% extends "tp.html" %}
{% block title %}
用户管理
{% endblock %}
{% block content %}
<h1>用户管理</h1>
{% endblock %}
这样最后登录tp1和tp2的效果如下:


这样就实现了继承,但是这里有个问题,如果tp1和tp2中自己想写自己单独的css以及js的话,就需要做如下操作:
在head的最下面写如下代码:
{% block css %}{% endblock %}
在body的最下面写如下代码:
{% block js %}{% endblock %}
这样在tp1以及tp2中就可以自定义自己的css
例如在tp1中添加如下代码:
{% block css %}
<style>
body{
background-color: red;
}
</style>
这样再次访问tp1.html的时候效果如下,而访问tp2的时候效果不会发生变化:

include
当有一些小的标签很多页面都需要用到的时候我们可以单独在一个html中将写标签,在tp1中以及tp2中通过include调用
具体如下,新添加一个tag.html,代码如下:
<form>
<input type="text">
<input type="text">
</form>
在tp1.html中代码如下:
{% block content %}
<h1>用户管理</h1>
{% include "tag.html" %}
{% endblock %}
这样最后的效果如下:

Django 中url补充以及模板继承的更多相关文章
- Django中url匹配规则的补充
Django中url匹配规则是在urls.py文件中配置的. 1.关于正则匹配优先级 在url匹配列表中,如果第一条和第二条同时满足匹配规则,则优先匹配第一条. 在url匹配列表中,如果第一条为正则模 ...
- django中url路由配置及渲染方式
今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 ...
- django中url 和 path 的区别
django中 url 和 path 都是配置路径,有什么不同? django.urls path django.conf.urls url path 与 url 是两个不同的模块,效果都是响应返回 ...
- django 中url与path小记
1. 在django 2.0中增加了一些新的特性 更简单的URL路由语法 (Simplified URL routing syntax) admin应用的针对移动设备的优化改进(Mobile-frie ...
- Django——URL详解/Django中URL是如何与urls文件匹配的
URL标准语法 protocol://hostname[:port]/path/[:parameters][?query]#fragment https://i.cnblogs.com/EditPos ...
- Django(4)html模板继承、模板导入、分页实现
1.获取所有请求信息 导入模块:from django.core.handlers.wsgi import WSGIRequest request.environ:包含所有的请求信息,可以打印看一下, ...
- Django中url使用命名空间的错误
出的错误: 1. Reverse for 'llist' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) ...
- Django中URL有关
django 模板中url的处理 在模板中直接添加‘/home’这样的链接是十分不推荐的,因为这是一个相对的链接,在不同网页中打开可能会返回不一样的结果. 所以推荐的是 1 <a href= ...
- Django中url的反向查询
明确几个概念: application namespace: 正在部署的app的名称,一个app的多个实例应该具有相同的application namespace. 可以通过在URLconf模 ...
随机推荐
- WinForm 与WPF 窗体之间的想到调用
先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyl ...
- 第二十九篇:使用SOUI的SMCListView控件
列表控件是客户端应用最常用的控件之一.列表控件通常只负责显示数据,最多通知一下APP列表行的选中状态变化. 现在的UI经常要求程序猿在列表控件里不光显示内容,还要能和用户交互,显示动画等等,传统的列表 ...
- hdu分类 Dynamic Programming(这是一场漫长的旅途)
下面是difficulty 1的题 1003 Max Sum 最长递增子序列.非常经典,最棒的解法是在线算法O(n)的复杂度. 贴的呢,是用dp做的代码. 先是一个高亮的dp递推式,然后找到最大处 ...
- 分享Kali Linux 2016.2第50周镜像文件
分享Kali Linux 2016.2第50周镜像文件Kali Linux官方于12月11日发布Kali Linux 2016.2的第50周镜像.这次保持以往规律,仍然是11个镜像文件.默认的Gnom ...
- an excellent capability of C# language and compiler
Sometimes you want to write code that works for different primitive types, and as C# doesn't support ...
- Python中的高级特性
1.切片.使用“[”和“]”即可,类似Matlab,可以切list,tuple,字符串等. 2.迭代.Python内置的enumerate函数可以把一个list变成索引-元素对. 3.列表生成式.列表 ...
- mallmold开源商城系统网银在线chinabank支付插件
最近没事捣鼓项目,找了个轻型商城系统mallmold,用起来还觉的挺不错的,尤其是mallmold中文版,赞一个.中文版集成了大部分主流支付系统,但因是个人网站,没法获得对应的服务,最终选择了网银在线 ...
- js实现两个页面之间跳转参数传递
html在设计时,规定跳转地址后加"?"表示从此开始为跟随页面地址跳转的参数. 有时候,我们希望获得相应的跳转前页面里的内容,这时候我们就可以考虑将内容以参数形式放到地址中传过来, ...
- 下载php扩展笔记
查找相关php的扩展网址https://pecl.php.net/index.php PECL 的全称是 The PHP Extension Community Library ,即PHP 扩展库.是 ...
- SQL Server 2008 R2数据库镜像部署
概述 “数据库镜像”是一种针对数据库高可用性的基于软件的解决方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中.建议使用不同位置的两台服务器来承载.在 ...