一、bootstrap模板使用

1.去bootstrap官网找一个合适的模板,下载下来,右键另存为即可

bootstrap官网---->bootstrap中文文档3-------->起步-------->找到合适模板------>右键另存为

2.在项目目录下新建statics目录,在statics目录下新建4个子目录,分别是:css、js、image、plugin,将下载下来的js放到js目录,css放到css目录,图片放到image目录

3.settings.py也要指定静态文件目录

STATIC_URL = '/static/'STATICFILES_DIRS = (os.path.join(BASE_DIR,'statics'),
)

3.将下载下来的网页放在templates目录下,并改名为base.html,它基本上全是css和js,它将被用作公共模板,

再创建一个index.html,index放的是下载下来的网页去掉css和js的部分,主要是公共内容和框架,它将被用做app网页的模板

然后在templates目录下新建一个app的目录:app,app目录用来存放app自己的页面。

base.html

<!DOCTYPE html>
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --><meta name="description" content=""><meta name="author" content="">
{#    meta全部保留,IE浏览器相关的可要可不要,图标与css也要全部保留#}<link rel="icon" href="http://v3.bootcss.com/favicon.ico"><title>王腾的个人站点</title><link href="/static/css/bootstrap.min.css" rel="stylesheet"><link href="/static/css/dashboard.css" rel="stylesheet">{% block header-resources %} {% endblock %}
{#    这里留一个block块,可以方便其他网页继承时进行扩展 来添加自定义样式#}</head><body>{% block body %} {% endblock %}
{#     这里留一个block  body块,可以方便其他网页继承时进行扩展 在body里添加自定义的内容#}<script src="/static/js/jquery.min.js"></script><script src="/static/js/bootstrap.min.js"></script><script src="/static/js/holder.min.js"></script>
{#    这些js全部保留,js的路径static是settings.py中STATIC_URL = '/static/'对应的STATIC_URL,而不是实际的目录名#}<script>
{#        这里是自定义js,点击相应按钮时,按钮变颜色#}
        $(document).ready(function () {var current_url = "{{ request.path }}";$('.nav-sidebar a[href="{{ request.path }}"]').parent().addClass('active');})</script>
</body></html>

View Code

index.html

{% extends 'base.html' %}
{#这里写继承base.html#}
{% block body %}
{#    这里在block body里自定义body的内容,要注意写上block body#}{% block nav-bar %}
{#        这个block块是页面最上边的导航栏,为了其他页面可自定制导航栏,这里弄一个块,当其它页面写上 {% block nav-bar %}{% endblock %}时#}
{#        其它页面的导航栏位置就不会显示模板的导航栏了#}<nav class="navbar navbar-inverse navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="http://v3.bootcss.com/examples/dashboard/#">TEST</a></div><div id="navbar" class="navbar-collapse collapse"><ul class="nav navbar-nav navbar-right"><li><a href="http://v3.bootcss.com/examples/dashboard/#">Dashboard</a></li><li><a href="http://v3.bootcss.com/examples/dashboard/#">Settings</a></li><li><a href="http://v3.bootcss.com/examples/dashboard/#">Profile</a></li><li class="dropdown">
{#                这里添加一个下拉菜单,也是找的模板上的#}<a href="http://v3.bootcss.com/examples/dashboard/#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ request.user.userprofile.name }}<span class="caret"></span></a><ul class="dropdown-menu"><li><a href="http://v3.bootcss.com/examples/dashboard/#">首页</a></li><li><a href="/logout">注销</a></li></ul></li></ul><form class="navbar-form navbar-right"><input type="text" class="form-control" placeholder="Search..."></form></div></div></nav>{% endblock %}<div class="container-fluid"><div class="row">{% block side-bar %}
{#              这里写一个左边栏block块,也是为了其他页面可以自定制#}<div class="col-sm-3 col-md-2 sidebar"><ul class="nav nav-sidebar">{% block side-bar-menu %}{% for role in request.user.userprofile.roles.all %}<h3></h3>
{#                      <li class="active"><a href="http://v3.bootcss.com/examples/dashboard/#">{{ role }}<span class="sr-only">(current)</span></a></li>#}{% for menu in role.menus.all %}<li><a href="{% if menu.url_type == 0 %}{% url menu.url_name  %}{% else %}{{ menu.url_name }}
{#                              这里的{% url menu.url_name  %}就是取得数据库中的url_name,并且将这个url_name与urls.py中的name做比较,相同才可以跳转到相应页面,#}{% endif %}">{{ menu.name }}</a></li>{% endfor %}{% endfor %}{% endblock %}</ul></div>{% endblock %}{% block right-container %}<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">{% block right-container-content %}<h1 class="page-header">Dashboard</h1><div class="row placeholders"><div class="col-xs-6 col-sm-3 placeholder"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" height="200" class="img-responsive" alt="Generic placeholder thumbnail"><h4>Label</h4><span class="text-muted">Something else</span></div><div class="col-xs-6 col-sm-3 placeholder"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" height="200" class="img-responsive" alt="Generic placeholder thumbnail"><h4>Label</h4><span class="text-muted">Something else</span></div><div class="col-xs-6 col-sm-3 placeholder"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" height="200" class="img-responsive" alt="Generic placeholder thumbnail"><h4>Label</h4><span class="text-muted">Something else</span></div><div class="col-xs-6 col-sm-3 placeholder"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" height="200" class="img-responsive" alt="Generic placeholder thumbnail"><h4>Label</h4><span class="text-muted">Something else</span></div></div><h2 class="sub-header">Section title</h2>{% endblock %}</div>{% endblock %}</div></div>
{% endblock %}

View Code

app/app.html

{% extends 'index.html' %}{% block right-container-content %}<h2 class="page-header">客户信息</h2>{{ request.path }}{% endblock %}

View Code

二.django管理界面设置
1.项目/urls.py

from django.conf.urls import url,include
from django.contrib import admin
from new import views  #导入app的views

urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^crm/', include('crm.urls')),url(r'^login/', views.acc_login),  #登录函数url(r'^logout/', views.acc_logout), #注销函数
]

View Code

2.app/urls.py

from django.conf.urls import url,include
from django.contrib import admin
from crm import views  导入app的viewsurlpatterns = [url(r'^$', views.dashboard,name='sales'), # 设置该页面为首页url(r'^customer$', views.customer,name='customer'),  # 注意这里的name='customer'的字段customer要与数据库中的url_name 存的customer完全相同才行
]

View Code

3.项目/views.py(使用django自带的登录验证)

#!/usr/bin/python
# -*- coding:utf-8 -*-
# author:wtfrom django.shortcuts import render,redirect
from django.contrib.auth import authenticate,login,logout  # 使用django自带的认证,登录,登出系统def acc_login(request):if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')user = authenticate(username=username,password=password)print('res',user.userprofile.name)if user:#  认证成功login(request,user)  # 将用户名写到session里return redirect('/crm')return render(request,'login.html')def acc_logout(request):logout(request)  # 登出return redirect('/login')

View Code

app/vies.py

from django.shortcuts import render
from django.contrib.auth.decorators import login_required  # 添加用户验证,直接输入业务网址,会自动跳转到登录界面
# Create your views here.
@login_required  # 添加用户验证,直接输入业务网址,会自动跳转到登录界面
def dashboard(request):return render(request,'crm/dashboard.html')
@login_required
def customer(request):return render(request,'crm/customer.html')

View Code

setting.py

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR,'statics'),
)LOGIN_URL = '/login/'  # 使用django自带的认证

View Code

4.app/models.py  创建app的表

from django.db import models
from django.contrib.auth.models import User# Create your models here.
class Customer(models.Model):  # 客户表name = models.CharField(max_length=32)qq = models.CharField(max_length=64, unique=True)weixin = models.CharField(max_length=64, blank=True, null=True)phone = models.PositiveIntegerField(blank=True, null=True)  # 只能存正数age = models.PositiveSmallIntegerField(blank=True,null=True)gender = models.PositiveIntegerField(choices=((0,'男'),(1,'女')))source_choices = ((0, '百度商桥'),(1,'51CTO'),(2,'QQ群'),(3,'知乎'),(4,'SOGO'),(5,'转介绍'),)source = models.SmallIntegerField(choices=source_choices)  # 存0-65535的数字referral_from = models.ForeignKey('self',related_name='my_referreals',blank=True,null=True,verbose_name='转介绍')  # 存转介绍的学生,关联自己表,‘related_name’用于反向查找consult_courses = models.ManyToManyField('Course')  # 咨询的课程status_choices = ((0,'已报名'),(1,'未报名'),(2,'已退学'),)status = models.SmallIntegerField(choices=status_choices)  # 报名状态consulttant = models.ForeignKey('UserProfile',verbose_name='课程顾问')  # 课程顾问consult_content = models.TextField(max_length=1024)  # 学生描述date = models.DateTimeField(auto_now_add=True)  #auto_now_add 创建记录时,自动添加创建时间,auto_now修改记录时,将创建时间改为修改时的时间def __str__(self):return '%s' % self.name  # 注意这里都要返回字符串,不能直接返回self.name,会报错,也不能不返回东西,否则在管理界面会看到一堆object字母class Emrollment(models.Model): # 学生报名表,只要有报名,就会创建一条学生与所报课程的记录customer = models.ForeignKey('Customer')class_grade = models.ForeignKey('ClassList')enrollment_date = models.DateField()  # 报名日期def __str__(self):return '%s' % self.customerclass Meta:unique_together = ('customer','class_grade')  # 设置联合唯一class FollowUpRecord(models.Model):  # 跟进记录表customer = models.ForeignKey('Customer')content = models.TextField(max_length=1024)status_choices = ((0, '绝无报名计划'),(1, '一个月内报名'),(2, '半个月内报名'),(2, '已选择其他机构'),)status = models.SmallIntegerField(choices=status_choices)  # 报名状态consulttant = models.ForeignKey('UserProfile', verbose_name='课程顾问')  # 课程顾问date = models.DateTimeField(auto_now_add=True)  #auto_now_add 创建记录时,自动添加创建时间,auto_now修改记录时,将创建时间改为修改时的时间def __str__(self):return "%s" % self.customerclass Course(models.Model):  # 课程表name = models.CharField(unique=True,max_length=64)price = models.PositiveIntegerField(default=19800)outline = models.TextField()  # 课程大纲def __str__(self):return '%s' % self.nameclass ClassList(models.Model): #  班级表course = models.ForeignKey('Course')semester = models.PositiveSmallIntegerField(verbose_name='学期')class_type_choices = ((0,'脱产'),(1,'周末'),(2,'网络'),)branch = models.ForeignKey('Branch')class_type = models.PositiveSmallIntegerField(choices=class_type_choices)teachers = models.ManyToManyField('UserProfile')start_date = models.DateField()end_date = models.DateField()def __str__(self):return '%s' % self.courseclass CourseRecord(models.Model):  # 每节课上课记录与考勤class_grade = models.ForeignKey('ClassList')day_number = models.PositiveSmallIntegerField(verbose_name='节次')teacher = models.ForeignKey('UserProfile')course_content = models.TextField(verbose_name='课程内容',max_length=1024)homework = models.BooleanField(default=True)homework_title = models.CharField(max_length=128,blank=True,null=True)homework_requirment = models.TextField(verbose_name='作业需求',max_length=1024,blank=True,null=True)def __str__(self):return '%s  daynum:%s' % (self.class_grade,self.day_number)class Meta:unique_together = ('class_grade','day_number')class StudyRecord(models.Model):  # 每个学生的每节课的成绩记录course_record = models.ForeignKey('CourseRecord')student = models.ForeignKey('Emrollment')score_choices = ((100,'A+'),(90,'A'),(85,'B+'),(80,'B'),(75,'B-'),(70,'C+'),(65,'C'),(40,'C-'),(-20,'D'),(-50,'COPY'),(0,'N/A'),)score = models.SmallIntegerField(choices=score_choices)show_status_choices = ((0,'缺勤'),(1,'迟到'),(2,'已签到'),)show_status = models.SmallIntegerField(choices=score_choices)grade_comment = models.TextField(max_length=1024,blank=True,null=True)def __str__(self):return "%s student:%s" % (self.course_record,self.student)class Meta:unique_together = ('course_record','student')class UserProfile(models.Model):  #  用户表user = models.OneToOneField(User)name = models.CharField(max_length=32)roles = models.ManyToManyField('Role',blank=True,null=True)def __str__(self):return '%s' % self.nameclass Role(models.Model):  # 角色管理name = models.CharField(max_length=32,unique=True)menus = models.ManyToManyField('Menu')def __str__(self):return '%s' % self.nameclass Branch(models.Model):  # 分校管理name = models.CharField(max_length=128,unique=True)def __str__(self):return '%s' % self.nameclass Menu(models.Model):  # 动态菜单name = models.CharField(max_length=32,unique=True)url_type = models.SmallIntegerField(choices=((0,'relative_url'),(1,'absolut_url')))url_name = models.CharField(unique=True,max_length=128)  # 存储每个学生或员工的urldef __str__(self):return '%s' % self.name

View Code

5.app/admin.py    使用django管理界面(进行app表注册)

from django.contrib import admin
from crm import models
# Register your models here.
class CustomerAdmin(admin.ModelAdmin):list_display = ('id','name','qq','consulttant','source','consult_content','status','date')  # 在管理界面根据这些列明显示详细信息list_filter = ('source','status','consulttant')  # 在管理界面显示过滤条件search_fields = ('qq','name')  # 在管理界面增加搜索框,搜索条件是qq或namelist_editable = ('status',)  # 在管理界面增加status字段的编辑框

admin.site.register(models.Customer,CustomerAdmin)
admin.site.register(models.FollowUpRecord)
admin.site.register(models.Emrollment)
admin.site.register(models.Course)
admin.site.register(models.ClassList)
admin.site.register(models.StudyRecord)
admin.site.register(models.UserProfile)
admin.site.register(models.Branch)
admin.site.register(models.Role)
admin.site.register(models.Menu)
admin.site.register(models.CourseRecord)

View Code

转载于:https://www.cnblogs.com/wt11/p/6599658.html

django管理界面使用与bootstrap模板使用相关推荐

  1. django启用超级管理员_如何启用和连接Django管理界面

    django启用超级管理员 介绍 (Introduction) If you have followed along in the Django Development series, you've ...

  2. 多用途bootstrap后台管理系统模板企业统计管理界面模板

    介绍: 基于bootstrap构建,响应式的电子商务后台管理系统ui页面模板. 适用于:电商销售统计.企业统计管理界面模板. 网盘下载地址: http://kekewl.net/yYrcYaCFVAU ...

  3. bootstrap ace后台管理界面模板

    2019独角兽企业重金招聘Python工程师标准>>> bootstrap ace后台管理界面模板 http://www.daimajiayuan.com/preview/18152 ...

  4. Django 02 :部门管理 【面板设计(Bootstrap)+部门的增删改查(Django+MySQL)】

    主题:用户管理系统 文章目录 一.新建项目 1.创建Django项目 2.创建并注册app 3.设计表结构 4.在MySQL中生成表 4.1.连接MySQL,生成数据库 4.2.修改配置文件(连接My ...

  5. 【django小练习之主机管理界面】

    需求: 利用django,js,bootstrap等实现登录,主机管理等操作. 实现截图 登录界面 主机界面,添加及编辑 部门管理界面 代码实现 目录层级 settings.py "&quo ...

  6. 基于bootstrap的漂亮网站后台管理界面框架汇总

    基于bootstrap的漂亮网站后台管理界面框架汇总 10个最新的 Bootstrap 3 管理模板 这里分享的 10 个模板是从最新的 Bootstrap 3 管理模板集合中挑选出来的,可以帮助你用 ...

  7. 吐血推荐50个高端大气上档次的后台管理界面模板

    UI设计  |  2013-09-03 通过使用漂亮的管理面板你可以省掉很多的时间,同样,设计良好的界面也适合在移动终端上使用,从而减少对PC的依赖和提供管理的灵活性. 这里收集了50个高端大气上档次 ...

  8. Django站点管理、视图和URL(管理界面本地化、创建管理员、注册模型类、发布内容到数据库、定义视图、配置URLconf)

    1.Django站点管理 站点: 分为内容发布和公共访问两部分 内容发布的部分由网站的管理员负责查看.添加.修改.删除数据 Django能够根据定义的模型类自动地生成管理模块 使用Django的管理模 ...

  9. 【Python】解决Django Admin管理界面样式表(CSS Style)丢失问题

    [Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 参考文章: (1)[Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 ( ...

  10. 设备管理系统html,蓝色的远程监控设备系统后台管理界面html模板

    模板名称: 蓝色的远程监控设备系统后台管理界面html模板 模板页面: actions.html.add.html.apikey_manage.html.batch.html.change_passw ...

最新文章

  1. 计算机应用基础第四章知识点,计算机应用基础 第四章电子表格笔试知识点总结...
  2. MairDB 如何查询表
  3. 【Excle数据透视表】如何创建非共享缓存的数据透视表
  4. django下载excel,使用django-excel插件
  5. SpringCloud Greenwich(二)注册中心之consul、Zuul和 gateway网关配置
  6. 从零学习机器学习_机器学习:如何从零变英雄
  7. LQR轨迹跟踪算法Python/Matlab算法实现_LQRmatrix推导(2)
  8. IO复用\阻塞IO\非阻塞IO\同步IO\异步IO
  9. python入门经典-Python入门经典
  10. 红黑树 RBTree
  11. 红芯浏览器终于承认抄袭,研发内核到底有多难:2400万代码
  12. RSA加密解密中pkcs1与pkcs8格式私钥互相转换
  13. multisim的汉化
  14. c++ vs2015 播放音乐_三星s20都取消了耳机孔,1k-2k的播放器会成为直推党新选择吗?...
  15. macOS Big Sur 11.4 (20F71) 正式版(DMG、ISO、IPSW),百度网盘下载
  16. adb工具的安装与常用命令
  17. 评价神经网络性能的指标,神经网络是参数模型吗
  18. 数字图像处理——红眼去除(Python)
  19. 青海大学的计算机专业排名,青海大学王牌专业有哪些及专业排名
  20. RK3588 Android12 SDK 中在device介绍及如何新建自己的产品lunch项

热门文章

  1. bagging算法_Bagging与随机森林算法及其变种
  2. java 判断qq_检测QQ号码是否存在
  3. 在unity中生成螺旋线的效果
  4. Tomcat access log配置
  5. 学习单片机入门以后可以做什么?
  6. java.lang.ArrayStoreException 已解决 byte[]数组拷贝问题
  7. 面试题--------11、Mysql的三大范式详解
  8. 6. 同步化器(Synchronizers)
  9. Hibernate的双向1-N关联(五)
  10. [渝粤教育] 江西财经大学 实用英语演讲 参考 资料