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 %}
这样最后的效果如下:
最新文章
- MongoDB的C#官方驱动InvalidOperationException异常的解决办法
- HTML与CSS基础知识补遗(一)
- html基础总结版
- weiphp执行的流程
- SQL Server Profiler工具
- 【转载】delete table 和 truncate table 的区别
- cocos2d-x之多点触碰初试
- 笔记一、Git服务器【转】
- 我个人有关 Azure 网络 SLA、带宽、延迟、性能、SLB、DNS、DMZ、VNET、IPv6 等的 Azure 常见问题解答
- cep
- 用Thread类创建线程-2
- SFTP文件上传与下载
- MFC 堆栈溢出 test dword ptr [eax],eax ; probe page.
- 笔记:Spring Cloud Eureka 服务发现与消费
- img之间的间隙问题
- SSM-MyBatis-18:Mybatis中二级缓存和第三方Ehcache配置
- 20175221 《Java程序设计》迭代和JDB(课下作业,选做):
- Bootstrap-datepicker3官方文档中文翻译---Keyboard support/键盘支持(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)
- 12 Connections
- 单片机 MCU 中 stack 使用的探讨