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补充以及模板继承的更多相关文章

  1. Django中url匹配规则的补充

    Django中url匹配规则是在urls.py文件中配置的. 1.关于正则匹配优先级 在url匹配列表中,如果第一条和第二条同时满足匹配规则,则优先匹配第一条. 在url匹配列表中,如果第一条为正则模 ...

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

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

  3. django中url 和 path 的区别

    django中 url 和 path 都是配置路径,有什么不同? django.urls path django.conf.urls  url path 与 url 是两个不同的模块,效果都是响应返回 ...

  4. django 中url与path小记

    1. 在django 2.0中增加了一些新的特性 更简单的URL路由语法 (Simplified URL routing syntax) admin应用的针对移动设备的优化改进(Mobile-frie ...

  5. Django——URL详解/Django中URL是如何与urls文件匹配的

    URL标准语法 protocol://hostname[:port]/path/[:parameters][?query]#fragment https://i.cnblogs.com/EditPos ...

  6. Django(4)html模板继承、模板导入、分页实现

    1.获取所有请求信息 导入模块:from django.core.handlers.wsgi import WSGIRequest request.environ:包含所有的请求信息,可以打印看一下, ...

  7. Django中url使用命名空间的错误

    出的错误: 1. Reverse for 'llist' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) ...

  8. Django中URL有关

    django 模板中url的处理   在模板中直接添加‘/home’这样的链接是十分不推荐的,因为这是一个相对的链接,在不同网页中打开可能会返回不一样的结果. 所以推荐的是 1 <a href= ...

  9. Django中url的反向查询

    明确几个概念: application namespace:   正在部署的app的名称,一个app的多个实例应该具有相同的application namespace.   可以通过在URLconf模 ...

随机推荐

  1. Java 8相关

    语言生态系统中的所有语言都有优胜劣汰的压力.虽然Java语言当前还在健康发展,但是保不定哪天就完蛋了. Java8增加的新特性从根本上来说是为了提高搬砖的姿势和效率. 多核编程的更好支持. 方法成为一 ...

  2. 关于vector的内存释放问题

    以前一直想当然的以为vector 的clear()函数会保证释放vector的内存,今天网上一查资料发现完全不是我想象的那样子. 比如有如下代码: tempObject obj1; tempObjec ...

  3. map 和 vector 的erase函数说明

    1. map的erase函数使用 这里首先要注意,C++针对map的erase函数有不同的函数原型,这往往是出现问题的关键所在.根据参考文献1: 在C++98中: (1) void erase (it ...

  4. [工作中的设计模式]享元模式模式FlyWeight

    一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...

  5. 循环遍历DataTable绑定到Table

    VoteList2.cs: using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...

  6. [NOIP2012]借教室 题解

    题目大意: 有一个n个数的数列,m个操作,第i个操作使[li,ri]区间建di,问第几个操作使数列中出现负数. 思路: 暴力显然过不了,那么就可以优化了,不难想到线段树,显然需要良好的姿势,那么就差分 ...

  7. [Note] Software Testing

    Mocking: Difference between error and failure: TDD: BDD:

  8. NOI 题库 7218

    7218  献给阿尔吉侬的花束 描述 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫.今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜 ...

  9. 修复VS,恢复初始状态

    命令提示 输入命令: devenv.exe /resetuserdata 处理版本221优化改动:1.SQL优化,采用预编译方式并将SQL语句修改为大写,尽量减少Oracle数据库硬解析2.复用部分代 ...

  10. C#生成二维码的方法

    本文实例讲述了C#生成二维码的方法.分享给大家供大家参考.具体实现方法如下: 首先引用ThoughtWorks.QRCode.dll 具体代码如下: 复制代码 代码如下: using System; ...