Django杂七杂八

来源:互联网 发布:九天网络 编辑:程序博客网 时间:2024/06/05 20:38

  • 表单提交
  • model
    • 时间model
  • Django的模板
    • 直接渲染HTML代码
  • Django中将数据传递到页面中的js内
  • Django中的CSRF验证问题
  • Django中使用Jinji2将变量传递到js中
  • Django模板中不转义html代码
  • Django判断跳转到首页
  • Django权限控制
  • Django中的文件上传

  • 这篇博客是记录一些使用Django开发要注意的小问题。

表单提交

加上

{% csrf_token %}

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 }}' },});

修改后端逻辑

from django.views.decorators.csrf import csrf_exempt@csrf_exemptdef saveNews(request):    new = request.POST    return HttpResponse(request)

Django中使用Jinji2将变量传递到js中

注意用”“将变量套起来

<script>    let errcode = "{{ errcode }}"   if(errcode == "1"){       alert("此号码已经录入,请勿重复录入!")   }</script>

Django模板中不转义html代码

{% autoescape off %}    {{ detail }}{% endautoescape %}

Django判断跳转到首页

from django.shortcuts import render, redirect for i in ['iphone', 'ipad', 'android']:     if i in request.META.get('HTTP_USER_AGENT', '').lower():         break else:     return redirect('/homepage')

Django权限控制

from django.contrib.auth import authenticate, login# 先进行登录,方便后面的权限控制# user = authenticate(username=request.wx_openid, password="qwer1234")# if user is not None:#   if user.is_active:#        login(request, user)#        print(">" * 100)

Django中的文件上传

主要注意文件保存路径是从项目根目录开始检索的,如path = “./laboratory/static/images/news”。

path = "./laboratory/static/images/news"                                                       myFile = request.FILES.get("myfile", None)  # 获取上传的文件,如果没有文件,则默认为None           if not myFile:        return HttpResponse("no files for upload!")                                                destination = open(os.path.join(path, myFile.name), 'wb+')    # 打开特定的文件进行二进制的写操作    for chunk in myFile.chunks():  # 分块写入文件                                                      destination.write(chunk)                                                                   destination.close()    return HttpResponse("upload over!")
0 0
原创粉丝点击