Django的ListView
经常有从数据库中获取一批数据,然后在前端以列表的形式展现,比如:获取到所有的用户,然后在用户列表页面展示。
from django.views.generic import ListView
from django.contrib.auth.mixins import LoginRequiredMixin
class Order_ListView(LoginRequiredMixin, ListView):
login_url = config['login_url']
redirect_field_name = config['redirect_to']
model = Order
paginate_by = 200
context_object_name = 'result'
ordering = 'id'
page_kwarg = 'page'
template_name = 'order.html'
def get(self, *args, **kwargs):
# 获取数据之前可以做一些其他的操作
return super().get(*args, **kwargs)
@property
def page_number(self):
# 分页
page_kwarg = self.page_kwarg
page = self.kwargs.get(page_kwarg) or self.request.GET.get(page_kwarg) or 1
return page
def get_context_data(self, *, object_list=None, **kwargs):
content = super(Facede_dys_Order_ListView, self).get_context_data(**kwargs)
# 需要携带其他数据的在这里写业务
return content
def get_queryset(self): # 重写get_queryset方法
return Order.objects.filter(is_deleted=False).order_by('-create_time')
Django的DetailView
from django.views.generic import DetailView
from django.contrib.auth.mixins import LoginRequiredMixin
class Order_DetailView(LoginRequiredMixin, DetailView):
login_url = config['login_url']
redirect_field_name = config['redirect_to']
model = Manufacture
template_name = 'detail.html'
pk_url_kwarg = 'id'
context_object_name = 'result'
query_pk_and_slug = False
def get(self, *args, **kwargs):
return super().get(*args, **kwargs)
def get_context_data(self, **kwargs):
content = super(Order_DetailView, self).get_context_data(**kwargs)
return content
def post(self, *args, **kwargs):
create_data = {k: v for k, v in self.request.POST.items() if k if v}
order.objects.filter(id=create_data['id']).update(status=1)
return JsonResponse({'code': 200, 'message': '添加完成!'})
Django的CreateView
from django.views.generic import CreateView
from django.contrib.auth.mixins import LoginRequiredMixin
class Order_CreateView(LoginRequiredMixin, CreateView):
login_url = config['login_url']
redirect_field_name = config['redirect_to']
model = order
fields = '__all__'
template_name = 'order_create.html'
def get(self, *args, **kwargs):
return super().get(*args, **kwargs)
def get_context_data(self, *, object_list=None, **kwargs):
content = super(Order_CreateView, self).get_context_data(**kwargs)
return content
def post(self, *args, **kwargs):
create_data = {k: v for k, v in self.request.POST.items() if k if v}
Manufacture.objects.create(**create_data)
return JsonResponse({'code': 200, 'message': 'OK!'})
Django的UpdateView
from django.views.generic import UpdateView
from django.contrib.auth.mixins import LoginRequiredMixin
class Order_UpdateView(LoginRequiredMixin, UpdateView):
login_url = config['login_url']
redirect_field_name = config['redirect_to']
model = Order
template_name = 'order_update.html'
context_object_name = 'result'
pk_url_kwarg = 'id'
fields = '__all__'
def get(self, *args, **kwargs):
return super().get(*args, **kwargs)
def get_context_data(self, **kwargs):
content = super(Order_UpdateView, self).get_context_data(**kwargs)
return content
def post(self, *args, **kwargs):
update_date = {k: v for k, v in self.request.POST.items() if k if v}
Manufacture.objects.filter(id=id, auth_id=auth_id).update(**update_date)
return JsonResponse({'code': 200, 'message': '修改成功!'})
Django的DeteleView
from django.views.generic import DeteleView
from django.contrib.auth.mixins import LoginRequiredMixin
class Order_DeleteView(LoginRequiredMixin, DeleteView):
login_url = config['login_url']
redirect_field_name = config['redirect_to']
model = order
template_name = 'order_delete.html'
pk_url_kwarg = 'id'
context_object_name = 'result'
success_url = '/index/order/'
def get(self, *args, **kwargs):
auth_info = check.auths(self.request)
if auth_info['code'] != 200:
return redirect(to=auth_info['urls'])
self.auths_info = auth_info
return super().get(*args, **kwargs)
def get_context_data(self, **kwargs):
context = super(Order_DeleteView, self).get_context_data(**kwargs)
context['ready_name'] = self.auths_info['ready_name']
context['url_id'] = self.auths_info['url_id']
context['id'] = self.kwargs[self.pk_url_kwarg]
return context
def form_valid(self, form):
Manufacture.objects.filter(
id=self.kwargs[self.pk_url_kwarg],
auth_id=form.data['auth_id'],
).delete()
return JsonResponse({'code': 200, 'message': '删除成功!', 'urls': self.success_url})