Django基础轮廓
  MTV+controller

一 url分发系统:
  1 简单使用

url(r'^articles/2003/$', views.special_case_2003),  # special_case_2003(request)
url(r'^articles/(\d{4})/$', views.year_archive), # year_archive(request,1999)
url(r'^articles/(\d{4})/(\d+)$', views.month_archive), # month_archive(request,1999,12)

  2 有名分组

url(r'^articles/(?P<y>\d{4})/(?P<m>\d+)$', views.month_archive2), 
# month_archive(request,y=1999,m=12)

  3 分发include

url('app/', include('app.urls')),

  4 反向解析

(1)在模板:     {% url '别名' %}
(2)在py文件中: _url=reverse("index")

二、视图函数

  浏览器  ----------  服务器
'''
请求首行
请求头
空格
请求体(post) # user=yuan&pwd=123 '''

  1、请求对象request

 # request;请求信息对象
print(request.method)
print(request.path)
print(request.GET)
print(request.POST) # {"user":"yuan","pwd":123}
print(request.body) # 请求体原生数据 " user=yuan&pwd=123"
print(request.META)
print(request.get_full_path()) #路径+请求数据
print(request.is_ajax())

  

  2、响应对象    

1 Httpresponse("OK")
2 render(request,"index.html")
(1) 找文件,读文件
(2) 渲染文件:将模板文件中的所有{{}},{%%}替换成标签
3 重定向 redirect
(1)浏览器发送一个post请求;
(2)请求通过了,服务器发送一个301或者302状态码和location:新路径给浏览器;
(3)接收到301或者302状态码,解读响应体中的location的值,携带此路径再一次访问服务器;
(4)服务器再一次接受到路径,将路径对应的数据打包好,传送给浏览器渲染。

三、模板语法

  1 渲染变量  {{val}}

(1) 深度查询 {{val.}}
(2) 过滤器 {{val|filter_name:参数}}
{{now|date:"Y-m-d"}} 常用过滤器: add date default lenth slice safe filesizeformat

  2 渲染标签  {%%}

{%for i in val%}
{%endfor%} {%if %}
{%endif%} {%csrftoken%}

  3、自定义标签和过滤器

1、在settings中的INSTALLED_APPS配置当前app;
2、在app中创建templatetags模块;
3、创建任意 .py 文件,如:my_tags.py;
4、编写代码
from django import template
from django.utils.safestring import mark_safe register = template.Library() #register的名字是固定的,不可改变 @register.filter
def filter_multi(v1,v2):
return v1 * v2 @register.simple_tag
def simple_tag_multi(v1,v2):
return v1 * v2

乘法标签和过滤器

 5、使用的时候导入自定义模板和标签文件

  {% load 文件名 %} 

 6、使用simple_tag和filter(如何调用)

  {{num|filter_multi:2 }} #24 其中num=12

  4、模板继承

1、创建母版base.html;
2、base.html中在设置
{% block content %}
设置盒子 {% endblock %}

 3、子.html文件中

{% extends "base.html" %} //继承母板结构

{% block content %}
此处写自己的html代码 {% endblock %}

  5 自定义模板升级 inclusion_tag

rbacmenu.py (模板文件)

from django import template

register = template.Library()  # register的名字是固定的,不可改变

@register.inclusion_tag('rbac/menu.html') #指定传递给传递给 rbac/menu.html文件
def get_menu(request):
# 权限侧边栏
permission_list = request.session['permissions_list']
per_list = []
for permission in permission_list:
if permission.get('type') == "menu":
per_list.append(permission)
return {"per_list":per_list}

rbac/menu.html 代码

{% for permission in per_list %}
<div><a href="{{ permission.url}}">{{ permission.title }}</a></div>
{% endfor %}

调用方法

        <div class="left-menu">

             {% block side_bar %}
{% load rbacmenu %}
{% get_menu request %} //此处调用,并传递参数request {% endblock side_bar %}
</div>

django url分发,视图,模板回顾的更多相关文章

  1. django url路径与模板中样式相对路径的问题

    static目录下有css和js及image等文件夹,里面放置网站的一些静态文件,static位于网站根目录下,django中配置静态文件这个就细说,网上都有,昨天在添加新内容时发现一个问题,我的ur ...

  2. Django url分发器

    视图: 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等.在视 ...

  3. Django url分发到工程里

    因为我们建立了Django后 ,url是在mysite下的全局对象 因为我们实际项目里不可能只有一个工程 而全放在全局里去分发url 会让代码耦合度提高,代码量大后会造成维护困难.这时候我们把url分 ...

  4. URL分发器(视图层)

    目录 视图 URL映射 path函数 URL中传入参数 普通传入参数 变量形式传入参数 ​URL中包含另一个urls模块 URL命名.URL反转.应用命名空间 视图 视图一般都写在 app  的 vi ...

  5. django重点url,视图函数,模板语言

    django重点url,视图函数,模板语言url 1.django重点url无命名分组:re_path() 2.url第一个参:url未命别名分组就不需要views中参数一定,若命别名(?P<y ...

  6. 【django基础补充之URL,视图,模版】

    一.url路由配置 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代 ...

  7. Django笔记 —— 高级视图和URL配置

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  8. Python学习笔记整理总结【Django】【MVC/MTV/路由分配系统(URL)/视图函数 (views)/表单交互】

     一.Web框架概述  Web框架本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python # -*- coding:utf-8 ...

  9. day53:django:URL别名/反向解析&URL分发&命名空间&ORM多表操作修改/查询

    目录 1.URL别名&反向解析 2.URL分发&命名空间 3.ORM多表操作-修改 4.ORM多表操作-查询 4.1 基于对象的跨表查询 4.2 基于双下划线的跨表查询 4.3 聚合查 ...

随机推荐

  1. RocketMQ源码分析之RocketMQ事务消息实现原理上篇(二阶段提交)

    在阅读本文前,若您对RocketMQ技术感兴趣,请加入 RocketMQ技术交流群 根据上文的描述,发送事务消息的入口为: TransactionMQProducer#sendMessageInTra ...

  2. ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件

    应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用. ASP.NET ...

  3. 理解 docker 容器中的 uid 和 gid

    默认情况下,容器中的进程以 root 用户权限运行,并且这个 root 用户和宿主机中的 root 是同一个用户.听起来是不是很可怕,因为这就意味着一旦容器中的进程有了适当的机会,它就可以控制宿主机上 ...

  4. 认识RabbitMQ交换机模型

    前言 RabbitMQ是消息队列中间件(Message Queue Middleware)中一种,工作虽然有用到,但是却没有形成很好的整体包括,主要是一些基础概念的认识,这里通过阅读<Rabbi ...

  5. MySQL在线DDL gh-ost 使用说明

    背景: 作为一个DBA,大表的DDL的变更大部分都是使用Percona的pt-online-schema-change,本文说明下另一种工具gh-ost的使用:不依赖于触发器,是因为他是通过模拟从库, ...

  6. 第9章 使用客户端凭据保护API - Identity Server 4 中文文档(v1.0.0)

    快速入门介绍了使用IdentityServer保护API的最基本方案. 我们将定义一个API和一个想要访问它的客户端. 客户端将通过提供ClientCredentials在IdentityServer ...

  7. WPF xaml中列表依赖属性的定义

    列表内容属性 如上图,是一个列表标题排序控件,我们需要定义一个标题列表,从而让调用方可以自由的设置标题信息. 在自定义控件时,会遇到列表依赖属性,那么该如何定义呢? 下面是错误的定义方式: /// & ...

  8. (摘)Entity Framework Core 2.1带来更好的SQL语句生成方案

    微软发布了Entity Framework Core2.1,为EF开发者带来了很多期待已久的特性.EF Core 2.1增加了对SQL GROUP BY的支持,支持延迟加载和数据种子等. EF Cor ...

  9. [MySQL] 5.7版本以上group by语句报1055错误问题

    1. 在5.7版本以上mysql中使用group by语句进行分组时, 如果select的字段 , 不是完全对应的group by后面的字段 , 有其他字段 , 那么就会报这个错误 ERROR 105 ...

  10. C#添加PDF页眉——添加文本、图片到页眉

    页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...