python学习第二十一天

url默认值

url(r'^index/', views.index,{'name':'root'}),

def index(request,name)

    print(name)

    return HttpResponse('ok')

 

url命名空间

工程urls.py

url(r'^a/', include("app01.urls",namespace='author'))

app01urls.py

appname='app01'

url(r'^(?P<pk>\d+)/$', views.detail,name='detail')

v =reverse('author:detail',kwargs={'pk':11}) 生成URL

{% url ('author:detail') pk=11 %}

 

获取请求相关数据

from django.core.handlers.wsgi import WSGIRequest

request.environ 获取所有请求相关数据

for k,v in request.environ.items():  循环获取请求数据的key-value值

    print(k,v)

request.environ['HTTP_USER_AGENT'] 获取用户客户端类型相关数据,pc或者手机,手机型号

 

模板继承

指定继承的模板

{% extends '模板文件名' %}

指定模板被替换的位置,其中继承文件中需要在中间加上替换的内容,对应位置的name值需要相同,不同位置的name值要区分。在模板文件<style>和<script src='jquery.js'>下都单独写一个block块用于替换继承文件独有的css样式和js代码

{% block name %}

{% endblock %}

 

模板导入

{% include '模板名称' %}

 

自定义simple_tag

1 在APP中创建templatetags目录

2 在templatetags目录中创建python文件,xxoo.py

3 from django import template

from django.utils.safestring import mark_safe

register =template.Library()

@register.simple_tag

def func()

4 注册APP

5 在模板顶部{% load xxoo %},或者在继承文件的extends下面

6 在<body>中{% func arg1 arg2 %}

注:参数任意数量

 

自定义filetr

上面第三部装饰器改为register.filter,第六步改为{{'arg1'|xxoo:'arg2'}},最多传两个参数,可以在模板语言的if中作为判断条件

 

自定义分页

page_str ='''<a href='/user_list/?p=1'>1</a>

<a href='/user_list/?p=2'>2</a>

<a href='/user_list/?p=3'>3</a>'''

{{ page_str|safe }} 前端标签字符串为安全的

from django.utils.safestring import mark_safe

page_str =mark_safe(page_str) 后台标记字符串为安全的

 

cookie

res =redirect('/index/')

res.set_cookie('username',u)  设置cookie

request.COOKIES.get('username') 获取cookie

res.set_signed_cookie('username',u,salt='sadasdsadas')  设置加密的cookie

request.get_signed_cookie('username',salt='sadasdsadas') 获取加密cookie

$.cookie("list_pager_num"30,{ path: '/' }); jquery设置cookie

设置cookie时可以使用的参数

          key,            键
        value='',         值
        max_age=None,     超时时间,以秒为单位
        expires=None,     超时时间,用datetime设置时间(IE requires expires, so set it if hasn't been already.)
        path='/',         Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问
        domain=None,       Cookie生效的域名
        secure=False,     https传输
        httponly=False          只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
 
装饰器
fbv装饰器同函数装饰器
cbv先写装饰函数,然后from django.utils.decorators import method_decorator,在被装饰方法前加@method_decorator(auth),或者在类前加@method_decorator(auth,name='dispatch')给所有方法加装饰器
posted @ 2017-04-12 15:39  魅力宁波  阅读(161)  评论(0)    收藏  举报