模板导入_分页_cookie_装饰器_实例
程序目录
urls.py
"""s14_day21 URL Configuration
"""
from django.contrib import admin
from django.conf.urls import url,include
from app01 import views
urlpatterns = [
# url(r'admin/', admin.site.urls),
# url(r'index/',views.index),
# url(r'index/',views.index,{'name':"root"}),
url(r'^a/', include('app01.urls', namespace='author_1')),
# url(r'^b/', include('app01.urls', namespace='publisher-polls')),
#
url(r'tpl1', views.tpl_1),
url(r'^tpl2', views.tpl_2),
url(r'^tpl3', views.tpl_3),
url(r'tpl4', views.tpl_4),
url(r'user_lis/',views.user_lis),
url(r'login/',views.login),
url(r'index/',views.index),
url(r'order/',views.Order.as_view()),
]
app01-->urls.py
"""s14_day21 URL Configuration
"""
from django.contrib import admin
from django.conf.urls import url
from app01 import views
app_name='app01'
urlpatterns = [
url(r'^indexx/',views.indexx, name='indexxy'),
]
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),
)
app01-->views.py
from django.shortcuts import render,HttpResponse,redirect
from django.urls import reverse
# Create your views here.
def indexx(request):
# print(name)
v= reverse('author_1:indexxy')
print(v)
# from django.core.handlers.wsgi import WSGIRequest
# print(type(request))
# environ封装了所有用户请求信息
# print(request.environ)
# for k,v in request.environ.items():
# print(k,':',v)
# request.POST
# request.GET
# request.COOKIES
# print(request.environ['HTTP_USER_AGENT'])
return HttpResponse('ok')
def tpl_2(request):
name='root'
return render(request,'tpl2.html',{'name':name})
def tpl_3(request):
status="已删除"
return render(request,'tpl3.html',{'status':status})
def tpl_1(request):
user_li=[1,2,3,4]
name = 'tpl_1'
return render(request,'tpl1.html',{'u':user_li})
def tpl_4(request):
name="TYGHijghjj112"
return render(request,'tpl4.html',{'name':name})
li=[]
for i in range(1009):
li.append(i)
from utils.pagetion import Page
def user_lis(request):
current_page=request.GET.get('p',1)
current_page=int(current_page)
val=request.COOKIES.get('per_page_count',10)
val=int(val)
Page_obj=Page(current_page,len(li),val)
data=li[Page_obj.start:Page_obj.end]
page_str=Page_obj.page_str("/user_lis/")
return render(request,'user_lis.html',{'li':data,'page_str':page_str})
########################## cookie ###########################
user_info_2={
'dachengzi':{'pwd':'123123'},
"kangbazi":{'pwd':'kkkkkk'},
}
def login(request):
if request.method =="GET":
return render(request,'login.html')
if request.method =="POST":
u=request.POST.get('username')
p=request.POST.get('pwd')
dic=user_info_2.get(u)
if not dic:
return render(request,'login.html')
if dic['pwd']==p:
res=redirect('/index/')
res.set_cookie('username111',u)
res.set_cookie('user_type','asdsdd',httponly=True)
# import datetime
# current_date = datetime.datetime.utcnow()
# current_date=current_date+datetime.timedelta(seconds=5)
# res.set_cookie('username111', u, expires=current_date)
return res
else:
return render(request, 'login.html')
def auth(func):
def inner(request,*args,**kwargs):
v=request.COOKIES.get('username111')
if not v:
return redirect('/login/')
return func(request,*args,**kwargs)
return inner
@auth
def index(request):
#获取当前已经登录的用户
v=request.COOKIES.get('username111')
return render(request,'index.html',{'current_user':v})
from django import views
from django.utils.decorators import method_decorator
@method_decorator(auth,name='dispatch') #对Order类里的dispatch方法进行装饰auth
class Order(views.View):
# @method_decorator(auth)
# def dispatch(self, request, *args, **kwargs):
# return super(Order,self).dispatch(request,*args,**kwargs)
# @method_decorator(auth)
def get(self,request):
v = request.COOKIES.get('username111')
return render(request, 'index.html', {'current_user': v})
def post(self,request):
v = request.COOKIES.get('username111')
return render(request, 'index.html', {'current_user': v})
def order(request):
#获取当前已经登录的用户
v=request.COOKIES.get('username111')
return render(request,'index.html',{'current_user':v})
def cookie(request):
#字典
request.COOKIES['username111']
request.COOKIES.get('username111')
response=render(request,'index.html')
response=redirect('/index/')
#设置cookie,关闭浏览器cookie就失效
response.set_cookie('key','value')
# 设置cookie,10秒后cookie就失效
response.set_cookie('username111', 'value', max_age=10)
# 设置cookie,到哪个时间节点失效
import datetime
current_date = datetime.datetime.utcnow()
current_date = current_date + datetime.timedelta(seconds=5)
response.set_cookie('username111', 'value', expires=current_date)
import datetime
current_date=datetime.datetime.utcnow()
# 获取cookie
request.COOKIES.get('....')
# 设置cookie
response.set_cookie("...")
obj=HttpResponse('s')
obj.set_signed_cookie('username','kbz',salt='aaassdf')
request.get_signed_cookie('username',salt='aaassdf')
return response
templates-->master.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="/static/commons.css">
<style>
.pg-header{
height:48px;
background-color: seashell;
color:green;
}
</style>
{% block css %}{% endblock %}
</head>
<body>
<div class="pg-header">管理</div>
{% block content %}{% endblock %}
<script src="/static/jquery.js"></script>
{% block js %}{% endblock %}
</body>
</html>
tempaltes-->tag.html
<div style="color: red">{{ name }}</div>
<div dd_name="尾品汇_列表_即将结束 " class="list_con">
<ul class="list_aa clearfix">
<li class="">
<a dd_name="all|21671|625|1" href="http://v.dangdang.com/pn21671_625_1.html" target="_blank" class="img"
title="迪士尼宝宝年货节">
<img data-original="http://img54.ddimg.cn/216710039996594_y.jpg"
src="http://img54.ddimg.cn/216710039996594_y.jpg" alt="迪士尼宝宝年货节" width="350" height="260"
style="display: inline;">
<span class="sale_time">
<span overtype="5" js="true" action="countdown"
type="seckill" class="time"
endvalue="1577757600" showtype="3"><span
sec="sep">还剩<span>191</span>天</span></span>
<span class="sale"></span>
</span>
<span class="red_circle" style="display: none;"></span>
<span class="little_logo">
<img data-original="http://img56.ddimg.cn/216710039996596_y.jpg"
src="http://img56.ddimg.cn/216710039996596_y.jpg"
width="115" height="40"
style="display: inline;">
</span>
<span class="price_s">
1.4<span>折起</span> </span>
</a>
</li>
</ul>
</div>
tpl1.html
{% extends 'master.html' %}
{% block title %}用户管理{% endblock %}
{% block content %}
<h1>用户管理</h1>
<ul>
{% for i in u %}
<li>{{ i }}</li>
{% endfor %}
</ul>
{% for i in u %}
{% include "tag.html" %}
{% endfor %}
{% endblock %}
{% block css %}
<style>
body{
background-color: green;
}
</style>
{% endblock %}
{% block js %}
<script></script>
{% endblock %}
static-->commons.css
body{
margin: 0;
}
tpl2.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/commons.css">
<style>
.pg-header{
height:48px;
background-color: seashell;
color:green;
}
</style>
</head>
<body>
<div class="pg-header">管理</div>
<h1>修改密码{{ name }}</h1>
<script src="/static/jquery.js"></script>
</body>
</html>
tpl3.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/commons.css">
<style>
.pg-header{
height:48px;
background-color: seashell;
color:green;
}
</style>
</head>
<body>
<div class="pg-header">管理</div>
<h3>{{ status }}</h3>
<script src="/static/jquery.js"></script>
</body>
</html>
templatetags-->xxoo.py
from django import template
from django.utils.safestring import mark_safe
register=template.Library()
@register.simple_tag
def hou(a1,a2):
return a1+a2
@register.filter()
def jz(a1,a2):
return a1+a2 #str(数字)
templates-->tpl4.html
{% load xxoo %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>{{ name }}</div>
<div>{{ name|lower }}</div>
{{ name|truncatewords:"30" }}
{% hou 2 9 %}
{{ "maliya" | jz:"LSS" }}
<script src="/static/jquery-1.12.4.js"></script>
{% if "maliya"|jz:"LSS" %}
alert(123)
{% endif %}
</body>
</html>
views.py.bak
from django.shortcuts import render,HttpResponse,redirect
from django.urls import reverse
# Create your views here.
def index(request):
# print(name)
v= reverse('author:index')
print(v)
from django.core.handlers.wsgi import WSGIRequest
# print(type(request))
# environ封装了所有用户请求信息
# print(request.environ)
# for k,v in request.environ.items():
# print(k,':',v)
# request.POST
# request.GET
# request.COOKIES
print(request.environ['HTTP_USER_AGENT'])
return HttpResponse('ok')
def tpl_2(request):
name='root'
return render(request,'tpl2.html',{'name':name})
def tpl_3(request):
status="已删除"
return render(request,'tpl3.html',{'status':status})
def tpl_1(request):
user_li=[1,2,3,4]
name = 'tpl_1'
return render(request,'tpl1.html',{'u':user_li})
def tpl_4(request):
name="TYGHijghjj112"
return render(request,'tpl4.html',{'name':name})
li=[]
for i in range(1009):
li.append(i)
def user_lis(request):
# data=li[0:10]
# data = li[10:20]
current_page=request.GET.get('p',1)
current_page=int(current_page)
per_page_count=10
pager_num = 11
start=(current_page-1)*per_page_count
end=current_page * per_page_count
data=li[start:end]
from django.utils.safestring import mark_safe
all_count = len(li)
total_count,y=divmod(all_count,per_page_count)
if y:
total_count+=1
page_list=[]
# start_index=1
# end_index=count+1
# start_index = current_page -5
# end_index = current_page +6
if total_count<pager_num:
start_index=1
end_index=total_count+1
else:
if current_page<=(pager_num+1)/2:
start_index=1
end_index=pager_num+1
else:
start_index=current_page -(pager_num-1)/2
end_index=current_page +(pager_num+1)/2
if (current_page+(pager_num-1)/2)>total_count:
end_index=total_count +1
start_index=total_count -pager_num +1
if current_page==1:
prev="<a class='page' href='#'>上一页</a>"
else:
prev="<a class='page' href='/user_lis/?p=%s'>上一页</a>"%(current_page-1,)
page_list.append(prev)
for i in range(int(start_index),int(end_index)):
if i == current_page:
temp="<a class='page active' href='/user_lis/?p=%s'>%s</a>"%(i,i)
else:
temp = "<a class='page' href='/user_lis/?p=%s'>%s</a>"%(i,i)
page_list.append(temp)
if current_page==total_count:
nex = "<a class='page' href='javascript:void(0);'>下一页</a>"
else:
nex = "<a class='page' href='/user_lis/?p=%s'>下一页</a>" % (current_page + 1,)
page_list.append(nex)
jump="""
<input type="text" /><a onclick="jumpTo(this, '/user_lis/?p=');">GO</a>
<script>
function jumpTo(ths,base){
var val= ths.previousSibling.value;
location.href = base + val;
}
</script>
"""
page_list.append(jump)
page_str="".join(page_list)
page_str=mark_safe(page_str) #转换成安全的代码
return render(request,'user_lis.html',{'li':data,'page_str':page_str})
utils-->pagetion.py
class Page:
def __init__(self, current_page, data_count, per_page_count=10, pager_num=7):
self.current_page = current_page
self.data_count = data_count
self.per_page_count = per_page_count
self.pager_num = pager_num
@property
def start(self):
return (self.current_page - 1) * self.per_page_count
@property
def end(self):
return (self.current_page) * self.per_page_count
@property
def total_count(self): # 页码总个数
v, y = divmod(self.data_count, self.per_page_count)
if y:
v += 1
return v
def page_str(self, base_url):
page_list = []
# start_index=1
# end_index=count+1
# start_index = current_page -5
# end_index = current_page +6
if self.total_count < self.pager_num:
start_index = 1
end_index = self.total_count + 1
else:
if self.current_page <= (self.pager_num + 1) / 2:
start_index = 1
end_index = self.pager_num + 1
else:
start_index = self.current_page - (self.pager_num - 1) / 2
end_index = self.current_page + (self.pager_num + 1) / 2
if (self.current_page + (self.pager_num - 1) / 2) > self.total_count:
end_index = self.total_count + 1
start_index = self.total_count - self.pager_num + 1
if self.current_page == 1:
prev = "<a class='page' href='#'>上一页</a>"
else:
prev = "<a class='page' href='%s?p=%s'>上一页</a>" % (base_url, self.current_page - 1,)
page_list.append(prev)
for i in range(int(start_index), int(end_index)):
if i == self.current_page:
temp = "<a class='page active' href='%s?p=%s'>%s</a>" % (base_url, i, i)
else:
temp = "<a class='page' href='%s?p=%s'>%s</a>" % (base_url, i, i)
page_list.append(temp)
if self.current_page == self.total_count:
nex = "<a class='page' href='javascript:void(0);'>下一页</a>"
else:
nex = "<a class='page' href='%s?p=%s'>下一页</a>" % (base_url, self.current_page + 1,)
page_list.append(nex)
jump = """
<input type="text" /><a onclick="jumpTo(this, '%s?p=');">GO</a>
<script>
function jumpTo(ths,base){
var val= ths.previousSibling.value;
location.href = base + val;
}
</script>
""" % (base_url,)
page_list.append(jump)
from django.utils.safestring import mark_safe
page_str = "".join(page_list)
page_str = mark_safe(page_str) # 转换成安全的代码
return page_str
user_lis.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.pagination .page{
display: inline-block;
padding:5px;
background-color: cyan;
margin:5px;
}
.pagination .page.active{
background-color: brown;
color:white;
}
</style>
</head>
<body>
<ul>
{% for item in li %}
{% include 'li.html' %}
{% endfor %}
</ul>
<div>
<select id="sel" onchange="changePageSize(this)" >
<option value="10">10</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
<div class="pagination">
{{ page_str}}
</div>
<script src="/static/jquery-1.12.4.js"></script>
<script src="/static/jquery.cookie.js"></script>
<script>
$(function () {
var v=$.cookie('per_page_count',v,{'path':'/user_lis'});
$('#sel').val(v)
});
function changePageSize(ths) {
var v= $(ths).val();
$.cookie('per_page_count',v,{'path':"/user_lis"});
location.reload();
}
</script>
</body>
</html>
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>欢迎登录:{{current_user}}</h1>
</body>
</html>
模板导入_分页_cookie_装饰器_实例的更多相关文章
- OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图
读取bmp等图片格式中的像素还有难度,就先用这个棋盘图象素来弄了 代码打错一个就一直First-chance exception ,貌似还有一个要用q或者Q才能成功退出,不知道缺少哪句,我用窗口红叉退 ...
- Python_oldboy_自动化运维之路_函数,装饰器,模块,包(六)
本节内容 上节内容回顾(函数) 装饰器 模块 包 1.上节内容回顾(函数) 函数 1.为什么要用函数? 使用函数之模块化程序设计,定义一个函数就相当于定义了一个工具,需要用的话直接拿过来调用.不使用模 ...
- python_装饰器_语法糖
什么是高阶函数? -- 把函数名当做参数传给另外一个函数,在另外一个函数中通过参数调用执行 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog ...
- python3.5-day5_迭代器_生成器_装饰器_模块
笔者QQ 360212316 迭代器&生成器 生成器: 一个函数调用返回一个迭代器,那这个函数叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器 生成器的特点: 1.生成器必 ...
- Python笔记_第四篇_高阶编程_再议装饰器和再议内置函数
1. 概述: 我们在前面用了很多的装饰器这个工具的方法.这个位置要系统的讲一下装饰器. 1.2 为什么需要装饰器. 装饰器本质是一个Python函数,它可以让其他函数在不需要任何代码变动的前提下增加额 ...
- Python-老男孩-02_装饰器_面向对象_封装_继承_异常_接口_数据库
装饰器其实也是一个函数,它的参数是一个函数 ; 其它函数与装饰器之间建立联系是通过 @装饰器函数名, 感觉有点像Spring的面向切面编程 装饰器函数,如何处理原函数的参数.? 装饰器 原函数返回值 ...
- Django(4)html模板继承、模板导入、分页实现
1.获取所有请求信息 导入模块:from django.core.handlers.wsgi import WSGIRequest request.environ:包含所有的请求信息,可以打印看一下, ...
- django基础 -- 4. 模板语言 过滤器 模板继承 FBV 和CBV 装饰器 组件
一.语法 两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二.变量 1. 可直接用 {{ 变量名 }} (可调用字符串, 数字 ,列表,字典,对象等) ...
- Python函数篇(5)-装饰器及实例讲解
1.装饰器的概念 装饰器本质上就是一个函数,主要是为其他的函数添加附加的功能,装饰器的原则有以下两个: 装饰器不能修改被修饰函数的源代码 装饰器不能修改被修改函数的调用方式 装饰器可以简单的理 ...
- Python之装饰器的实例
1.1装饰器的应用:参数类型检查 函数参数的检查,一定是在函数外 函数应该作为参数,传入到检查函数中 检查函数拿到函数传入的实际参数,与形参声明对比 __annotations__属性是一个字典,其中 ...
随机推荐
- 安川机器人HW1171766-A本体线缆维修详解
随着工业自动化程度的不断提高,安川机器人在生产线上的应用越来越广泛.然而,在长期运行过程中,安川机器人本体线缆可能会出现磨损.老化.断裂问题,这些问题不仅会影响机器人的正常运行,还可能导致生产线的停滞 ...
- android无障碍开发 企业微信 机器人
实现 Android 无障碍开发 企业微信 机器人 作为一名新入行的开发者,你可能对如何开发一个支持企业微信的无障碍机器人感到迷茫.在这篇文章中,我将为你详细讲解实现这一功能的流程和代码示例. 流程概 ...
- docker - [15] springboot微服务打包docker镜像
步骤: 1.构建Springboot项目 2.打包应用 3.编写dockerfile 4.构建docker镜像 5.发布运行 一.构建Springboot项目 (1)创建一个SpringBoot(以下 ...
- docker - [07] 部署ES+Kibana
思考问题:以后在Tomcat部署项目,如果每次都要进入容器会十分麻烦,是否可以在容器外部提供一个映射路径,webapps,在外部放置项目,自动同步到容器内部? 一.启动es docker run -d ...
- CF2029C New Rating
思路(二分 + 数据结构优化DP) 大致题意为:一个值 \(x\) 初始为 \(0\),然后有一个数组 \(a\),遍历一次数组. 如果 \(a_i > x\),则 \(x + 1\). 如果 ...
- Elasticsearch搜索引擎学习笔记(二)
可视化插件 GitHub搜索elasticsearch-head并下载,如果网络不好可以在gitee上搜索. 这是一个前端项目,需要安装nodejs. 在项目根目录执行 npm install npm ...
- Elasticsearch搜索引擎学习笔记(一)
核心概念 ES -> 数据库 索引index -> 表 文档 document -> 行(记录) 字段 fields -> 列 安装Elasticsearch 1. 上传后解压 ...
- 【ABAQUS2023-Output Vars】使用记录
计算结构的应变能,ALLSE=所有单元的ESEDEN*EVOL.但这不适用于模态分析,因为模态分析EVOL不能用 ALLSE Field: no History: yes .fil: automati ...
- 【前端动画】—— 再看tweenJS
16开始接触前端,一直对一个问题特别感兴趣,那就是js动画,也就是从那时起开始探究动画的各种表现形式,也是那个时候开始意识到编程这块东西最终考验的就是抽象和逻辑,而这一切完全是数学里边的东西. 最早接 ...
- go 简单封装数学运算包
前言 我们在编写程序时,经常会遇到一些高精度的数学运算,这时候使用简单的运算符会造成精度的缺失. 这里引用了这个第三方包 https://github.com/shopspring/decimal 做 ...