django 笔记8 url模板 自定义函数 simple_tag
感谢alex老师~ 知识点:
URL
- 两个没见
url>路由系统> 函数或类 > 返回字符串
Form表单提交:
提交 >url>函数或类中的方法
-..
HttpResponse()
render(request,'index.html')
redirect('/index/') 用户<< 返回字符串
(当接收到redirect时)自动发起另一个请求 Ajax:
$.ajax({
url:'/index/',
data:{} , //用字典形式发$(form对象).serialize() 但如果有多选 需要添加traditional:true
type:"POST",
traditional: true
dataType:'JSON',
success:function(data){
location.reload() #刷新
location.href = "某个地址" #跳转
}
}) 提交 -> url ->函数或类中的方法
HttpResponse('''')
用户 << 字符串
注:字典需先转为字符串才能发送到后台
'k3':JSON.stringfy({'k3':'v'})
Views
-请求的其他信息 request from django.core.Handers.wsgi import WSGIRequest
print(type(request))
print(request.environ) 所有的信息
分辨手机PC的请求头 print(request.environ['HTTP_USER_AGENT']) #request.POST
#request.GET
#request.COOKIES Models
- 大量的操作 Templates
- 模板的继承...html
extends
include
- 模板自定义函数 自定义simple_tag
步骤如下: 注:名字不能改 templatetags register
:首先在某个app下面建立一个叫templatetags
:在templatetags创建个任意py文件 如 cc.py
:然后写上
##########################
from django import template
from django.utils.safestring import mark_safe
register = template.Library() @register.simple_tag //加个装饰器
def func(a1,a2):
return a1+a2
##########################
.使用 在setting里面要注册当前app
.在templates的html文件里使用 如1.html
.在顶部 {% load cc %} py文件的名字 如果有extends放其下面 {%extends 'master.html' %} {% load cc %}
.{% func %} 就会显示5 里面的空格无关系 函数名 注:
@register.simple_tag //加个装饰器 随意参数 且空格随意 缺点 不能作为if条件
def func(a1,a2):
return a1+a2 {% func %} @register.filter #filter只能传两个值 空格还得控制 应用场景:用在if判断里{% if "mm"|haha:"gg" %} {%endif%}
def haha(a1,a2,a3):
return a1+a2+a3 {{"mm"|haha:"gg"}} {{参数1|函数名:"参数2"}} cookie和session用来用户认证 当用户登录成功后才能操作 -装饰器 分页只能在django用
()用django的一个类
()自定义的分页 公共的主页 通用的 对用户的请求进行验证
Form验证: 路由系统URL:
a./index/ -> 函数或类
b. /index/(?P<nid>\d+) 函数或类
d. /index/(?P<pid>\d+) name='root'
reverse() {% url 'root' %}
from django.urls import reverse (views.py)
v = reverse('root')
print(v) e./crm/ include('app01.urls') 路由分发 f.默认值
url(r'^index/', views.index,{'name':'root'}),
def index(request,name):
return HttpResponse(name) g.命名空间 一般不用
urls
/admin/ include('app01.urls' ,namespace="m1"),
/crm/ include('app01.urls', namespace = "m2") app01.urls
/index/ name = 'n1'
reverser('m1:n1') 生成完整的url /admin/index app01.urls
/index/(\d+) 、
def func(request):
request.POST
request.GET
request.FILES
request.getlist
request.method
request.path_info return render,HttpResponse, redirect 、
render(request, "index.html")
for
if
索引 keys values items all 、
class User(models.Model):
username = models.CharField(max_length=) //字符长度
email = models.EmailField()
Django Admin :有验证功能
User.objects.create(username="root", email="afuhadf")
如果使用这句是可以插入成功的 ,但是在django Admin里面添加则会需要验证 增删改查
外键
一对多
多对多
注:()user_type = models.ForeignKey("UserType")
user_list = User.objects.all() //对象列表
for obj in user_list:
obj.user_type_id
obj.user_type.name #对象的跨表 ()user = User.objects.get(id=) //单个对象
user. ()User.objects.all().values("username","user_type__name") //__的跨表 根据values 多对多
()
class UserType(models.Model):
name = models.CharField(max_length=) class User(models.Model):
username = models.CharField(max_length=)
email = models.EmailField()
user_type = models.ForeignKey("UserType")
m = models.ManyToMany("UserGroup") class UserGroup(models.Model):
name = .... obj = User.objects.get(id = )
obj.m.add()
obj.m.add(*[,,])
obj.m.remove()
obj.m.clear()
obj.m.ser([,,,]) #多个组的信息。 UserGroup对象
obj.m.all()
obj.m.filter(name = 'CTO') 创建一个base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title%}{% endblock%}</title>
{% block css %}{% endblock %}
</head>
<body>
<div>小蛇皮</div>
{% block content %}{% endblock %}
<script src="/static/jquery.js"></script>
{% block js %}{% endblock %}
</body>
</html>
在head中的 tp1.html
{% extends 'base.html' %} #要继承哪个模板
{% block title %}用户管理 {% endblock %} 要继承模板的哪个块
{% block content %}
<h1>用户管理</h1>
<ul>
for循环
<ul> {% endblock %}
{% block css %}
<style>
<style>
{% endblock %}
{% block js %}
<script><script>
{% endblock %}
但是关于CSS JS 同时跟顺序无关 {% include "tag.html" %} 先写一个tag.html小功能 一个模板里添加这个 可以重复添加
django 笔记8 url模板 自定义函数 simple_tag的更多相关文章
- 模板语言 自定义函数simple_tag
模板语言自带的一些处理函数:通过管道符来处理 帮助方法:{{ item.event_start|date:"Y-m-d H:i:s"}} 转换成日期时间型{{ bio|trunc ...
- 模板自定义函数 template function
sqlite3中的日期默认是UTC,当日期字段的默认值是CURRENT_TIMESTAMP时,这个日期和北京时间CST少了8小时. 网上建议说数据库里用UTC,读取数据时再转换为当地时间. web页面 ...
- sqlserver -- 学习笔记(一)自定义函数(学习总结,备忘)
SQL Server自定义函数,以前只在书上看过,没有动手去敲一敲,今天刚好接触到,看了几篇博文学习了下.做好备忘很重要!! (@_@)Y Learn from:http://www.cnblogs. ...
- PHP移动互联网开发笔记(4)——自定义函数及数组
一.自定义函数 自定义函数就是我们自己定义的函数,在PHP中自定义函数格式如下: function funname(arg1, arg2, arg3......){ //TODO return val ...
- Django笔记&教程 3-1 模板(Template)基础
Django 自学笔记兼学习教程第3章第1节--模板(Template)基础 点击查看教程总目录 1 介绍 模板文件:让Django能够自动生成html代码 作为一个web框架,Django需要需要在 ...
- django笔记-模型数据模板呈现过程记录(多对多关系)
首先,推荐一个网址:http://www.tuicool.com/articles/BfqYz2F,因为这里的比我的要有条理,更有利于各位的理解. 以下仅为为个人一次不完整的笔记: 环境:ubuntu ...
- django自带url模板标签的使用
django模板中url标签和view中的reverse(博客地址)功能相同,都是通过制定处理视图来返回一个url. 使用方法: {% url userEdit 12 %} 或者 {% url use ...
- Django笔记&教程 3-3 模板常用语法
Django 自学笔记兼学习教程第3章第3节--模板常用语法 点击查看教程总目录 本文主要参考:https://docs.djangoproject.com/en/2.2/ref/templates/ ...
- Django笔记&教程 3-4 模板继承
Django 自学笔记兼学习教程第3章第4节--模板继承 点击查看教程总目录 在介绍具体的技术之前,先介绍在什么样的场景中,需要使用这样的技术,我觉得这对于新手理解起来很重要. 一般来说,要渲染一个页 ...
随机推荐
- (转)<![CDATA[]]>和转义字符
被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”. 此标记用于xml文档中,我们先来看看使用转义符的情 ...
- app-framework学习--nav的Scroller禁用与启用
app-framewor(jqmobi) nav的Scroller禁用与启用 写在panel 的 data-load 方法里 禁用 $.ui.scrollingDivs.menu_scroller. ...
- 性能监控之监控SQL语句
分析表 analyze table tablename compute statistics for all indexes; analyze table tablename compute stat ...
- 如何使用scss/sass
SCSS 与 Sass 异同:http://sass.bootcss.com/docs/scss-for-sass-users/: 欢迎加入前端交流群来py: 转载请标明出处! 废话不多说,直接进入正 ...
- angular4过滤器
Angular4中过滤器 一.大小写转换过滤器 uppercase将字符串转换为大写 lowercase将字符串转换为小写 <p>将字符串转换为大写{{str | uppercase}}& ...
- Android tablayout增加选择tab 的事件.
tablayout在点击或者滑动的时候会触发监听事件 , 当你调用这个方法的时候 会触发事件 mTablayout.addOnTabSelectedListener(new TabLayout.On ...
- 编译Speex生成so库文件(android-speex)
项目中需要用音频格式转换,之前使用VoAacEncoder,部分手机总是莫名崩溃,所以决定不再使用VoAacEncoder,换做Speex来完成格式转换,但是没有找到Speex的库文件,网上介绍的都是 ...
- 【原创】Linux下的ngix服务器安装步骤
1.首先下载ngix的源码linux版本[1.5.8版本] http://nginx.org/en/download.html 2.下载PCRE library,是安装ngix的必备包之一 [root ...
- C#多播委托和事件的区别与关系
事件是对委托的封装. 如果一个类里,你把一个委托声明为 public 了,那么外部就可以随意改变委托变量的值,包括清空委托变量等,这样的话就违背了面向对象思想的封装特性:但如果声明为 private ...
- shell-3.bash的基本功能:通配符和其他特殊字符
1. 2.