Python Django高级应用

一, Django高级扩展
1, 静态文件 css,js, 图片,python文件,
2, 配置steting文件
{% load static from staticfiles %}
将绝对路径换成相对路径。在HTML文件中加入包static。就可以表示一个相对位置,不用担心项目位置发生变化
Static标签用的是用STATIC_URL = '/static/'在拼接后面的路径。

这个是一些图片使用的
STATIC_URL = ‘/static/’
普通文件使用
STATICFILES_DIRS=[
os.path.join(BASE_DIR,‘static’)

]

二, 中间件
1, 概述:一个轻量级,底层的插件,可以介入DJANAGO的请求和相应,
本质就是一个python
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’,
]
这些都是一些中间件,实际上就是映入了一个类,然后就是应用里面的方法
方法:1,–init–, 不需要传参,服务器相应是调用,用于确定是否调用中间件,执行视图之间,匹配视图之间,每个请求都会执行一次
2, Process_request(self,request)
3, process.view(self,request.view_func,view_args,view_kwargs)
4, process_template_response(self,request,response)
5, process_response(self,request, response)
6, process.exxeption(self,request,exception)
7,
过程见下图

8, 自定义中间件
9, 创建一个python文件
代码如下;

from django.utils.deprecation import MiddlewareMixin
#自定义中间件
class MyMiddle(MiddlewareMixin):
def process_request(self, request):
print(“get参数为:”, request.GET.get(“a”))
三, 使用中间件:配置seting文件
‘middleware.myApp.myMiddle.MyMiddle’,
四,上传图片
直接写代码,实现我呢间是上传
文件上传的时候是储存在request.FILES属性中
储存路径:在static目录下由于储存接受上传的文件
配置seting.py文件
#上传文件更目录
MDEIA_ROOT=os.path.join(BASE_DIR,r’static\upfile’)

写代码实现文件上传

{% csrf_token %}

def savefile(request):
if request.method==“POST”:
f=request.FILES[“file”]
#合成文件在服务器的路径
filepath=os.path.join(settings.MDEIA_ROOT,f.name)
with open(filepath,‘wb’)as fp:
for info in f.chunks():
fp.write(info)
return HttpResponse(“上传成功”)
else:
return HttpResponse(“上传失败”)
return render(request, ‘myApp/index.html’, )

四, 分页
五,
两个对象:Paginator对象,Page对象

Paginator——格式 Pageinator(列表,整数)
返回值 返回分页对象:属性:count:对象总数
Num_pages:页面总数
Page_range:页码列表:[1,2,3,4,5]
页码从一开始

Page—格式(page(num):获取一个配置对象,如果提供的页码不存在,会抛出一个异常。InvalidExecption
创建对象:Pageinterger对象的page()方法放回得到page对象,不需要手动创建
属性:见图:

异常:InvailPage党page传递的是一个无效的页码事抛出
PageNotAnteger:党项page传递的不是一个整数是抛出
Emeptypage:当向传递的一个有效值,但是页面没有数据时抛出

方法:见图:

两者之间的关系:如图

分页 :先添加路由url(r’^studentpages/(\d+)/$’, views.studentpages),
Viems代码

分页:

from django.core.paginator import Paginator
def studentpages(request,pageid):
# 所有学生的列表

allList=Students.objects.all()
paginator=Paginator(allList,3)
print(paginator)
page=paginator.page(pageid)
return render(request,'myApp/studentpage.html',
{"students":page})

Html代码:

学生分页显示
  • {% for stu in students %}
  • {{stu.sname}}--{{stu.sgrade}}
  • {% endfor %}
  • {% for index in students.paginator.page_range %} {% if index == students.number %}
  • {{index}}
  • {% else %}
  • {{index}}
  • {% endif %}
    {% endfor %}
    

五.Ajax网页无刷新
需要动态生成,请求JSON数据
先写视图
{% load static from staticfiles %}

学生信信息列表
   <link rel="stylesheet" type="text/css"
   href="{% static 'myApp/css/style.css' %}"/>

  <script type="text/javascript" charset="utf-8"
 src="{% static 'myApp/js/jquery.min.js' %}"></script>

学生信信息列表

显示学生信息 在写js文件 $(document).ready(function (){

document.getElementById(“btn”).οnclick=function(){
$.ajax({
type:“get”,
url:"/studentsinfo/",
dataType:“json”,
success:function(data,status){
console.log(data)
var d=data[“data”]
for(var i=0;i<d.length;i++){
document.write(’

’+d[i][0]+’

’)
}
 }
 })

}
})
在配置url

再就是view

ulrfrom django.http import JsonResponse
def studentsinfo(request):
stus = Students.objects.all()
list=[]
for stu in stus:
list.append([stu.sname,stu.sage])
return JsonResponse({“data”:list})

六 ,富文本
先安装 pip django-tinymce
在站点中使用
在自定义视图中使用
首先 :什么富文本
富文本格式(Rich Text Format, 一般简称为RTF)是一种跨平台文档格式,由微软公司开发。大多数的文字处理软件都能读取和保存RTF文档。
  富文本格式是一种类似DOC格式(Word文档)的文件,有很好的兼容性,使用Windows系统里面的“写字板”就能打开并进行编辑。RTF是一种非常流行的文件结构,很多文字编辑器都支持它。一般的格式设置,比如字体和段落设置,页面设置等等信息都可以存在RTF格式中能在一定程度上实现word与wps文件之间的互访。
  一个RTF文件由未格式化文本、控制字、控制符号和组组成。为了更容易的转换,一个标准的RTF文件应该仅包含7位ASCII码字符,RTF文件没有限制文件的行的最大长度

在站点中使用:
创建模型类并在admin.py里面z注册。 如下:
Admnzhong::from .models import Text
admin.site.register(Text)
Model中:from tinymce.models import HTMLField

HTMLField这个就是打文本的意思

class Text(models.Model):
str=HTMLField()

在页面使用(自定义):
首先:配置urls:代码如下
url(r’^edit/$’, views.edit),
然后编写html:

富文本 sunck is good man 七,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值