django_project_demo/app/views/task.py
2024-08-24 03:25:23 +00:00

97 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
对ajax的测试前端数据是从task_list.html中提交过来的
主要用到
1.django的csrf认证post请求时)
2.数据返回时使用的是json格式
3.数据接收request.POST,或request.GET
重点是返回给前端的数据是json格式
"""
import json
from django import forms
from django.shortcuts import render, HttpResponse, redirect
# 免除crsf认证如果ajax请求时不是表单提交所以会很复杂导入他就行
from django.views.decorators.csrf import csrf_exempt
from app.models import Task
from app.utils.bootstrap import BootstrapModelForm
from app import models
from app.utils.pagination import Pagination
class TaskModelForm(BootstrapModelForm):
class Meta:
model = models.Task
fields = '__all__' # 所有字段
# 单独针对详细信息进行控件控制
widgets = {
'detail': forms.TextInput,
# 'detail': forms.Textarea,
}
""" 任务管理 """
def task_list(request):
# 猎取全部记录
queryset = models.Task.objects.all().order_by('-id')
page_object = Pagination(request, queryset) # 实例化分页导航条类
page_queryset = page_object.page_queryset # 获得分完页的数据结果
# 生成分页导航条
page_nav = page_object.html()
form = TaskModelForm()
content = {
'form':form,
'queryset': page_queryset, # 分完页的数据结果
'page_nav': page_nav # 生成的页码导航条
}
return render(request, 'task_list.html', content)
@csrf_exempt
def task_ajax(request):
# <QueryDict: {'level': ['3'], 'title': ['asdfasdf'], 'detail': ['adfadf'], 'user': ['2']}>
print(request.GET)
print(request.POST) # 接收到的数据
print(request.POST['n1'])
# 一般来讲ajax返回的是一个JSON格式的数据
data_dict = {"status": True, "data": [11, 22, 33]}
data_json = json.dumps(data_dict)
return HttpResponse(data_json)
@csrf_exempt
def task_add(request):
# print(request.POST)
# 对ajax提交近来的数据进行校验
form = TaskModelForm(data=request.POST)
if form.is_valid():
form.save() # 向数据表添加数据
# 将标记传回前端
data_dict = {"status": True, }
return HttpResponse(json.dumps(data_dict))
# 如果有错误
# 将生成错误以json格式返回给前端
data_dict = {"status": False, 'error_msg': form.errors}
return HttpResponse(json.dumps(data_dict, ensure_ascii=False)) # ensure_ascii编码格式
@csrf_exempt
def task_edit(request):
pass
@csrf_exempt
def task_delete(request, nid):
"""
删除任务
"""
Task.objects.filter(id=nid).delete()
return redirect('/task/list/')