day19
怎么在自己的项目里加入 bootstrap 和 jqucry ?
下载下来再拷贝到项目里(jqucry1.0支持IE 8,9的)
前端展示用户列表:
自定义分页(模块化)
把分页写成模块,以后用到分页的时候可以调用:
1、在Django中先生成一个app00,注册,配置url&views
from django.conf.urls import url from django.contrib import admin from app00 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^user_list/',views.user_list), ]
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app00', ]
from django.db import models class UserProfile(models.Model): user = models.OneToOneField(User) #alex name = models.CharField(max_length=64) school = models.ForeignKey('School')
2、分页代码
from django.shortcuts import render,redirect import models from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger from crm import forms from permissions import check_permission # Create your views here. def dashboard(request): return render(request,'crm/dashboard.html') @check_permission def customers(request): customer_list = models.Customer.objects.all() paginator = Paginator(customer_list,3) page = request.GET.get('page') try: customer_objs = paginator.page(page) except PageNotAnInteger: customer_objs = paginator.page(1) except EmptyPage: customer_objs = paginator.page(paginator.num_pages) return render(request,'crm/customers.html',{'customer_list':customer_objs}) @check_permission def customer_detail(request,customer_id): customer_obj = models.Customer.objects.get(id=customer_id) if request.method == "POST":#后台判断POST form = forms.CustomerModelForm(request.POST,instance=customer_obj) #print(request.POST) if form.is_valid():#修改之前先作验证 form.save() print( 'url:',request.path)#获取url base_url = "/".join(request.path.split("/")[:-2]) print( 'url:',base_url) return redirect(base_url) #else: else: form = forms.CustomerModelForm(instance=customer_obj) return render(request,'crm/customer_detail.html',{'customer_form':form})
{% extends 'base.html' %} {% load custom_tags %} {% block page-header %} 客户信息列表 {% endblock %} {% block page-content %} <table class="table table-hover"> <thead> <tr> <th>ID</th> <th>QQ</th> <th>姓名</th> <th>渠道</th> <th>咨询课程</th> <th>课程类型</th> <th>客户备注</th> <th>状态</th> <th>课程顾问</th> <th>日期</th> </tr> </thead> <tbody> {% for customer in customer_list %} <tr> <td><a href="{% url 'customer_detail' customer.id %}">{{ customer.id }}</a></td> <td>{{ customer.qq}}</td> <td>{{ customer.name}}</td> <td>{{ customer.source}}</td> <td>{{ customer.course}}</td> <td>{{ customer.get_course_type_display}}</td> <td>{{ customer.consult_memo|truncatechars:50}}</td> <td class="{{ customer.status }}">{{ customer.status|alex_upper }}</td> <td>{{ customer.consultant}}</td> <td>{{ customer.date}}</td> </tr> {% endfor %} </tbody> </table> <div class="pagination"> <nav> <ul class="pagination"> {% if customer_list.has_previous %} <li class=""> <a href="?page={{ customer_list.previous_page_number }}" aria-label="Previous"> <span aria-hidden="true">«</span> </a> </li> {% endif %} {% for page_num in customer_list.paginator.page_range %} {% guess_page customer_list.number page_num %} {% endfor %} {% if customer_list.has_next %} <li class=""><a href="?page={{ customer_list.next_page_number }}" aria-label="Next"><span aria-hidden="true">»</span></a></li> {% endif %} </ul> </nav> </div> {% endblock %}
def customers(request): customer_list = models.Customer.objects.all() paginator = Paginator(customer_list,3) page = request.GET.get('page') try: customer_objs = paginator.page(page) except PageNotAnInteger: customer_objs = paginator.page(1) except EmptyPage: customer_objs = paginator.page(paginator.num_pages) return render(request,'crm/customers.html',{'customer_list':customer_objs})
分页代码
<div class="pagination"> <nav> <ul class="pagination"> {% if customer_list.has_previous %} <li class=""> <a href="?page={{ customer_list.previous_page_number }}" aria-label="Previous"> <span aria-hidden="true">«</span> </a> </li> {% endif %} {% for page_num in customer_list.paginator.page_range %} {% guess_page customer_list.number page_num %} {% endfor %} {% if customer_list.has_next %} <li class=""><a href="?page={{ customer_list.next_page_number }}" aria-label="Next"><span aria-hidden="true">»</span></a></li> {% endif %} </ul> </nav> </div>
from django import template from django.utils.html import format_html register = template.Library() @register.filter def alex_upper(val): print("--val from template:",val ) return val.upper() @register.simple_tag def guess_page(current_page,loop_num): offset = abs(current_page - loop_num) if offset <3: if current_page == loop_num: page_ele = '''<li class="active"><a href="?page=%s">%s</a></li>''' %(loop_num,loop_num) else: page_ele = '''<li class=""><a href="?page=%s">%s</a></li>''' %(loop_num,loop_num) return format_html(page_ele) else: return ''
通用权限系统的设计思路:
加权限是因为希望不同的角色有不同的权限,不同的角色做的事情是不一样的。