django管理界面使用与bootstrap模板使用
一、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模板使用相关推荐
- django启用超级管理员_如何启用和连接Django管理界面
django启用超级管理员 介绍 (Introduction) If you have followed along in the Django Development series, you've ...
- 多用途bootstrap后台管理系统模板企业统计管理界面模板
介绍: 基于bootstrap构建,响应式的电子商务后台管理系统ui页面模板. 适用于:电商销售统计.企业统计管理界面模板. 网盘下载地址: http://kekewl.net/yYrcYaCFVAU ...
- bootstrap ace后台管理界面模板
2019独角兽企业重金招聘Python工程师标准>>> bootstrap ace后台管理界面模板 http://www.daimajiayuan.com/preview/18152 ...
- Django 02 :部门管理 【面板设计(Bootstrap)+部门的增删改查(Django+MySQL)】
主题:用户管理系统 文章目录 一.新建项目 1.创建Django项目 2.创建并注册app 3.设计表结构 4.在MySQL中生成表 4.1.连接MySQL,生成数据库 4.2.修改配置文件(连接My ...
- 【django小练习之主机管理界面】
需求: 利用django,js,bootstrap等实现登录,主机管理等操作. 实现截图 登录界面 主机界面,添加及编辑 部门管理界面 代码实现 目录层级 settings.py "&quo ...
- 基于bootstrap的漂亮网站后台管理界面框架汇总
基于bootstrap的漂亮网站后台管理界面框架汇总 10个最新的 Bootstrap 3 管理模板 这里分享的 10 个模板是从最新的 Bootstrap 3 管理模板集合中挑选出来的,可以帮助你用 ...
- 吐血推荐50个高端大气上档次的后台管理界面模板
UI设计 | 2013-09-03 通过使用漂亮的管理面板你可以省掉很多的时间,同样,设计良好的界面也适合在移动终端上使用,从而减少对PC的依赖和提供管理的灵活性. 这里收集了50个高端大气上档次 ...
- Django站点管理、视图和URL(管理界面本地化、创建管理员、注册模型类、发布内容到数据库、定义视图、配置URLconf)
1.Django站点管理 站点: 分为内容发布和公共访问两部分 内容发布的部分由网站的管理员负责查看.添加.修改.删除数据 Django能够根据定义的模型类自动地生成管理模块 使用Django的管理模 ...
- 【Python】解决Django Admin管理界面样式表(CSS Style)丢失问题
[Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 参考文章: (1)[Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 ( ...
- 设备管理系统html,蓝色的远程监控设备系统后台管理界面html模板
模板名称: 蓝色的远程监控设备系统后台管理界面html模板 模板页面: actions.html.add.html.apikey_manage.html.batch.html.change_passw ...
最新文章
- 计算机应用基础第四章知识点,计算机应用基础 第四章电子表格笔试知识点总结...
- MairDB 如何查询表
- 【Excle数据透视表】如何创建非共享缓存的数据透视表
- django下载excel,使用django-excel插件
- SpringCloud Greenwich(二)注册中心之consul、Zuul和 gateway网关配置
- 从零学习机器学习_机器学习:如何从零变英雄
- LQR轨迹跟踪算法Python/Matlab算法实现_LQRmatrix推导(2)
- IO复用\阻塞IO\非阻塞IO\同步IO\异步IO
- python入门经典-Python入门经典
- 红黑树 RBTree
- 红芯浏览器终于承认抄袭,研发内核到底有多难:2400万代码
- RSA加密解密中pkcs1与pkcs8格式私钥互相转换
- multisim的汉化
- c++ vs2015 播放音乐_三星s20都取消了耳机孔,1k-2k的播放器会成为直推党新选择吗?...
- macOS Big Sur 11.4 (20F71) 正式版(DMG、ISO、IPSW),百度网盘下载
- adb工具的安装与常用命令
- 评价神经网络性能的指标,神经网络是参数模型吗
- 数字图像处理——红眼去除(Python)
- 青海大学的计算机专业排名,青海大学王牌专业有哪些及专业排名
- RK3588 Android12 SDK 中在device介绍及如何新建自己的产品lunch项
热门文章
- bagging算法_Bagging与随机森林算法及其变种
- java 判断qq_检测QQ号码是否存在
- 在unity中生成螺旋线的效果
- Tomcat access log配置
- 学习单片机入门以后可以做什么?
- java.lang.ArrayStoreException 已解决 byte[]数组拷贝问题
- 面试题--------11、Mysql的三大范式详解
- 6. 同步化器(Synchronizers)
- Hibernate的双向1-N关联(五)
- [渝粤教育] 江西财经大学 实用英语演讲 参考 资料