Django基础知识

 1、session 用base64解码 不是永久的

django清除session从django.contrib.auth import logout

logout(request)

request.session.clear()

request.session.flush()

2、设置过期时间:

set_expiry(value) 不设置2个星期,, 10 为10秒之后过期 可以写整数、时间的对象、0(关闭浏览器是过期)、None(永不过期)

3、django定义模板:

变量 {{ 变量 }} 传递给模板的数据

标签 {% tag %} 1输出中创建文本 2控制逻辑和循环 分类 if for conment ifequal include url csrf_token block/extends autoescape

过滤器 {{ var|过滤器}} 作用,在变量在显示前修改 不修改本身 lower upper 过滤器可以传递参数,参数用引号引起来,join(拼接字符串) test|default:"没有" date

根据指定格式转换日期为字符串 date {{}dateVal|dateL:"y-m-d"}

4、html 转义 escape

加减乘除:

5、注释 单行注释: {#content #} 多行注释:{comment}

6、include 加载模板并且以标签内的参数渲染

7、django反向解析:

模板继承:减少页面的重复利用,减少重复代码 移动端用到继承头和尾!

8、djangoHTML转义: {{ code|safe}} 或者 {% autoescape off%} {% endautoescape %}

9、csrf: 跨站请求伪造,恶意网站包含链接、表单、按钮、 利用登录的用户在浏览器中认证,从而攻击服务,意思是从浏览器把首页给拿出来,然后复制到自己的代码中,再把请求完整的路径给复制到action中模拟请求,就是为了防止跨站请求

'django.middleware.csrf.CsrfViewMiddleware', 把自己给防了

{% csrf_token %} 这个如果找到了也不行,没有绝对的安全

10、django验证码:注册登录时防止暴力请求,减轻服务器的压力,防止csrf的一种方式

11、破解代码:

def veryfycode(request):

from PIL import Image, ImageDraw, ImageFont

import random

bgcolor = (random.randrange(20, 100), random.randrange(20, 100), random.randrange(20, 100))

width = 100

height = 50

im = Image.new("RGB", (width, height), bgcolor)

draw = ImageDraw.Draw(im)

for i in range(0, 100):

xy = (random.randrange(0, width), random.randrange(0, height))

fill = (random.randrange(0, 255), 255, random.randrange(0, 255))

draw.point(xy, fill=fill)

str = "1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"

rand_str = ""

for i in range(0, 4):

rand_str += str[random.randrange(0, len(str))]

fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255))

draw.text((5, 2), rand_str[0], fill=fontcolor)

draw.text((25, 2), rand_str[1], fill=fontcolor)

draw.text((50, 2), rand_str[2], fill=fontcolor)

draw.text((75, 2), rand_str[3], fill=fontcolor)

del draw

request.session["verifycode"] = rand_str

import io

buf = io.BytesIO()

im.save(buf, "png")

return HttpResponse(buf.getvalue(), "image/png")

12、django静态文件:css 要配置settings文件!

可以是图像路径:

STATIC_URL = '/static/'

文件目录:

STATICFILES_DIRS = [

os.path.join(BASE_DIR, "static")

 ]

13、django中间件:轻量级。底层插件,可以介入django的请求和相应, 本质是一个python类, 有6个方法 包括__Init__

14、上传图片:必须是post请求!

存在服务器上,自己上传上去的,,,文件上传的时候,文件存储在request.files的属性中,存到服务器的目录静态文件中,在static下创建upfile`目录用来存储上传上来的图像

配置settings文件: MDEIA_ROOT=os.path.join(BASE_DIR, r"static/upfile")

表单需要加一个属性:enctype="multipart/form-data"

def savefile(request):

if request.method == "POST":

15、f 为文件描述符

f = request.FILES.get("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("上传失败")

16、django分页展示:

paginator(列表, 整数每页几个)对象 创建对象 属性 方法 异常 返回一个分页对象

属性:count num_pages(页码总数) page_range(页码列表,从1开始)

invalidpage 抛出异常没有此页数

pagenotinterger 不是整数时

emptypage 传递页数是正确的,但是没有数据

paginator对象.page 获取page对象

page(num) 对象 获取一个page对象,如果页码不存在,抛出异常invalidpage

属性: object_list 当前页上的所有数据的列表

number 当前页的页码值

paginator 当前page对象关联的paginator对象

paginator方法:

has_next :有返回true

has_previous:

has_other_pages:

next_page_number: 返回下一页的页码

previous_page_number: 返回上一页的页码

len :返回当前页的数据对象个数

17、django的ajax:

需要动态生成,请求json数据 点击页面上的按钮请求学生的json数据

18、django富文本: 主要用于写博客时使用

1 在站点中使用:配置settings文件 在installed_apps添加 tinymce

2 创建模型类

3 配置站点

在自定义的视图中使用:

富文本的配置文件 模式和大小

TINYMCE_DEFAULT_CONFIG = {

"them":"advanced",

"width":600,

"height":400,

}

在自定义视图中使用的最多:在页面中使用

19、django中的celery:

网站每隔一段时间会同步一下数据:但是http请求是需要触发的 -----使用celery定时执行

用户请求,等待response: -------任务放到celery中执行

celery名词:

任务task:本质是一个函数,将耗时操作封装成一个函数

队列queue:将要执行的任务放到队列中

工人worker:负责执行队列中的任务

代理broker:负责调度,在部署环境中,一般使用redis

pip install celery

pip install celery-with-redis

pip install django-celery

配置settings:

installed_app djcelery

import djcelery

djcelery.setup_loader() 初始化队列

BROKER_URL = "redis://:sunck@127.0.0.1:6379/0"

CELERY_IMPORTS = ("app.task"

在应用目录下创建task.py文件

迁移,生成celery需要的数据库表

在工程目录下的__init__文件中添加 from .celery

celery 启动命令:

python manage.py celery -A helloworld worker -l info

20、迁移命令:

python manage.py makemigrations 基于当前的model创建新的迁移策略文件

python manage.py migrate 用于执行迁移动作,具有syncdb的功能

转载于:https://my.oschina.net/u/3841099/blog/3023938

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值