分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

django url分发,视图,模板回顾

发布时间:2023-09-06 02:31责任编辑:胡小海关键词:urldjango

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 templatefrom django.utils.safestring import mark_safe register = template.Library() ??#register的名字是固定的,不可改变 ?@register.filterdef filter_multi(v1,v2): ???return ?v1 * v2@register.simple_tagdef 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 templateregister = 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分发,视图,模板回顾

原文地址:https://www.cnblogs.com/angle6-liu/p/10209099.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved