django url分发,视图,模板回顾
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分发,视图,模板回顾的更多相关文章
- django url路径与模板中样式相对路径的问题
static目录下有css和js及image等文件夹,里面放置网站的一些静态文件,static位于网站根目录下,django中配置静态文件这个就细说,网上都有,昨天在添加新内容时发现一个问题,我的ur ...
- Django url分发器
视图: 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等.在视 ...
- Django url分发到工程里
因为我们建立了Django后 ,url是在mysite下的全局对象 因为我们实际项目里不可能只有一个工程 而全放在全局里去分发url 会让代码耦合度提高,代码量大后会造成维护困难.这时候我们把url分 ...
- URL分发器(视图层)
目录 视图 URL映射 path函数 URL中传入参数 普通传入参数 变量形式传入参数 URL中包含另一个urls模块 URL命名.URL反转.应用命名空间 视图 视图一般都写在 app 的 vi ...
- django重点url,视图函数,模板语言
django重点url,视图函数,模板语言url 1.django重点url无命名分组:re_path() 2.url第一个参:url未命别名分组就不需要views中参数一定,若命别名(?P<y ...
- 【django基础补充之URL,视图,模版】
一.url路由配置 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代 ...
- Django笔记 —— 高级视图和URL配置
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Python学习笔记整理总结【Django】【MVC/MTV/路由分配系统(URL)/视图函数 (views)/表单交互】
一.Web框架概述 Web框架本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python # -*- coding:utf-8 ...
- day53:django:URL别名/反向解析&URL分发&命名空间&ORM多表操作修改/查询
目录 1.URL别名&反向解析 2.URL分发&命名空间 3.ORM多表操作-修改 4.ORM多表操作-查询 4.1 基于对象的跨表查询 4.2 基于双下划线的跨表查询 4.3 聚合查 ...
随机推荐
- pymysql.err.InternalError: (1205, 'Lock wait timeout exceeded; try restarting transaction')错误处理
问题描述: 在使用pymysql库时,利用游标执行插入操作,产生错误,会出现pymysql.err.InternalError: (1205, 'Lock wait timeout exceeded; ...
- Java 的强引用、弱引用、软引用、虚引用
1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.如下: Object o=new Object(); // 强引用 当内存空间 ...
- [零] JavaIO入门简介 程序设计语言 为什么需要IO库
本文旨在引申出来Java IO的概念含义,作为学习JavaIO一个起步的了解知识点 部分内容引自<计算机操作系统第三版> 操作系统的文件管理 "在现代计算机系统中,要用到 ...
- 基于React-Native0.55.4的语音识别项目全栈方案
移动端的API能力验证方案与PC端不一样!不一样!!不一样!!! 即使需要使用的API都存在,也不一定能用,这一点和PC端是有很大区别的,国内的手机系统虽然都是基于Android,但几乎都会经过各大厂 ...
- C# 如何添加PPT背景(纯色背景、渐变色背景、图片背景)
我们在创建Powerpoint文档时,系统默认的幻灯片是空白背景的,很多时候我们需要自定义幻灯片背景,以达到美观的文档效果.在下面的示例中将介绍给PowerPoint幻灯片设置背景的方法,主要包含以下 ...
- C# 实现对PPT插入、编辑、删除表格
现代学习和办公当中,经常会接触到对表格的运用,像各种单据.报表.账户等等.在PPT演示文稿中同样不可避免的应用到各种数据表格.对于在PPT中插入表格,我发现了一个新方法,不过我用到了一款免费的.NET ...
- 拯救老旧工程,记桥接SpringMVC与Stripes框架
背景: 公司基础设施部门推出了自己的微服务框架(以下简称M),要求所有业务应用都要接入进去,但坑爹的是M只提供了SpringMVC工程的support,对于采用Stripes作为MVC框架的应用并不支 ...
- jquery实现ajax提交表单的方法总结
方法一: 分别获取所需数据元素,DOM结构外层不用包form标签(适用于数据量少,数据元素分散于整个页面) $.ajax({ type: 'POST', url:'', data: { residen ...
- python 练习 simple_server 判断路径及返回函数
函数 routers 返回一个 urlpatterns 元组,里面包含了路径名和函数名:在 函数 application 中遍历 urlpatterns 元组,路径存在则返回函数名,不存在则返回 40 ...
- JAVA forname classnotfoundexception 错误
今日在使用Class.forName方法的时候报了错误: JAVA forname classnotfoundexception 原因是Class.forName(className);里面的clas ...