Django 模板笔记及换环境之后IP地址出错怎么解决

换电脑、换网线或者换环境之后,IP地址不再是原来的
can not connect/grant 'root'@'电脑信息' please use password 'YES'
解决办法 1. 在数据库中添加用户user
2. 在数据库中输入grant all privileges on *.* to 'root'@'%' identified by 'mysql';给予登录权限


HTML转义
在试图中,通过调试模板传递上下文,模板对上下文传递的字符串进行输出时,会对以下字符自动转义
HTML转义作用:转义后标记代码不会被直接解释执行,而是被直接呈现,防止客户端通过嵌入js代码攻击网站
小于号 < 转换为 <
大于号 > 转换为 >
单引号 ' 转换为 '
双引号 " 转换为 "
与符号 & 转换为 &


禁止HTML转义
过滤器escape可以实现对变量的HTML转义,默认模板就会转义,一般省略
{{ 变量|escape }}
过滤器safe:禁用转义,告诉模板这个变量是安全的,可以解释执行
{{ 变量|safe }}
标签autoescape:设置一段代码都禁用转义,接受on、off参数
on:启用转义
off:禁用转义


1.对于在模板中硬编码 < > ' " & 不会被转义
2.在模板中硬编码如果希望出现转义的效果,则需要手动编码转义


CSRF
CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。
CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。
造成的问题:个人隐私泄露以及财产安全。


总结:Django 提供的 CSRF 防护机制


1.Django 第一次响应来自某个客户端的请求时,会在服务器端随机生成一个 token,把这个 token 放在 cookie 里。然后每次 POST 请求都会带上这个 token,这样就能避免被 CSRF 攻击。


2.在返回的 HTTP 响应的 cookie 里,django 会为你添加一个 csrftoken 字段,其值为一个自动生成的 token


3.在所有的 POST 表单时,必须包含一个 csrfmiddlewaretoken 字段 (只需要在模板里加一个 csrf_token标签, django 就会自动帮我们生成)


4.在处理 POST 请求之前,django 会验证这个请求的 cookie 里的 csrftoken 字段的值和提 交的表单里的 csrfmiddlewaretoken 字段的值是否一样。如果一样,则表明这是一个合法的请求,否则,这个请求可能是来自于别人的 csrf 攻击,返回 403 Forbidden.


验证码
在用户注册、登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻业务服务器、数据库服务器的压力


手动实现验证码
1.安装Pillow3.4.1包,用于制作验证码
2.生成验证码
3.准备输入验证码的网页
4.接收客户端输入的验证码,并与服务器生成的验证码判断是否一致




反向解析


问题:
随着功能的增加会出现更多的视图,可能之前配置的正则表达式不够准确,于是就要修改正则表达式
但是正则表达式一旦修改了,之前所有对应的超链接都要修改,这是一件麻烦的事情
而且可能还会漏掉一些超链接忘记修改,是否有办法让链接根据正则表达式动态生成呢?


解决:反向解析


应用:反向解析应用在模板中的超链接,视图中的重定向


反向解析演练--模板中的超链接
修改正则表达式url(r'^fan1/$', views.fan1),为url(r'^fan123/$', views.fan1),
1.项目中添加 namespace属性
url(r'^', include('Book.urls', namespace='Book'))
  2.应用中添加 name属性
  url(r'^fan123/$', views.fan1, name='fan1'),
  3.模板中动态生成地址
  动态地址跳转到fan1


  反向解析演练--视图中的重定向
  需要导入模块
  from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
重定向动态生成链接
# 重定向的反向解析
url(r'^redirect/$', views.redirect),
# 重定向的反向解析
def redirect(request):
    return HttpResponseRedirect(reverse('Book:fan1'))


静态文件
项目中的图片、CSS、js都是静态文件
一般会将静态文件放到一个单独的目录中,以方便管理
静态文件可以放在项目根目录下,也可以放在应用的目录下
由于有些静态文件在项目中是通用的,所以推荐放在项目的根目录下,方便管理
在项目的settings文件中,通过STATICFILES_DIRS列表配置静态文件的加载路径
在html页面中调用静态文件时,需要指定静态文件所在的路径

你可能感兴趣的:(Django,笔记)