- 这篇博客是记录一些使用Django开发要注意的小问题,没错,就是这样,是不是很简单。
model
时间model
分为三类:DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。这三个field有着相同的参数auto_now和auto_now_add。
auto_now无论是你添加还是修改对象,时间为你添加或者修改的时间。
auto_now_add为添加时的时间,更新对象时不会有变动。
datetime是日期加上时间,date只是日期,time只有时间。
Django的模板
直接渲染HTML代码
通常,我们在使用Django渲染HTML代码的时候会出现代码被转义的情况,不能出现我们理想的状态,去除转义的方法如下:
{% block main %}
{{ content }}
{% endblock main %}
换成
{% block main %}
{% autoescape off %}
{{ content }}
{% endautoescape %}
{% endblock main %}
Django中将数据传递到页面中的js内
仅需要注意两点
- 记得将Python数据转成Json
return render(request, 'homepage/index_cn.html', {"patents": json.dumps(patents)})
- 记得在页面获取Json数据的时候加上safe
var patents = {{ patents|safe }}
Django中的CSRF验证问题
- 直接在表单下设置
Django模板
<form method="POST" action="/post-url/">
{% csrf_token %} || 在jinjia2中使用{{ csrf_token }}
<input name='zqxt' value="自强学堂学习Django技术">
</form>
jinjia2
<form method="POST" action="/post-url/">
<input value="{{ csrf_token }}" style="display:none"></input>
<input name='zqxt' value="自强学堂学习Django技术">
</form>
- ajax请求
$.ajaxSetup({
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
});
Django中使用Jinji2将变量传递到js中
注意用”“将变量套起来
<script>
let errcode = "{{ errcode }}"
if(errcode == "1"){
alert("此号码已经录入,请勿重复录入!")
}
</script>