Django+Xadmin打造在线教育系统(八)
首页和全局404,500配置
- 轮播图
- 公开课
- 授课机构
新建view
## 首页view
class IndexView(View):
def get(self,request):
# 取出轮播图
all_banner = Banner.objects.all().order_by('index')[:5]
# 正常位课程
courses = Course.objects.filter(is_banner=False)[:6]
# 轮播图课程取三个
banner_courses = Course.objects.filter(is_banner=True)[:3]
# 课程机构
course_orgs = CourseOrg.objects.all()[:15]
return render(request, 'index.html', {
"all_banner":all_banner,
"courses":courses,
"banner_courses":banner_courses,
"course_orgs":course_orgs,
})
为Course添加字段: isbanner
is_banner = models.BooleanField(default=False, verbose_name="是否轮播")
CourseOrg添加一个字段
tag = models.CharField(max_length=10, default= "国内名校",verbose_name="机构标签")
前端页面
{% block content %}
<div class="banner">
<div class="wp">
<div class="fl">
<div class="imgslide">
<ul class="imgs">
{% for banner in all_banner %}
<li>
<a href="{{ banner.url }}">
<img width="1200" height="478" src="{{ MEDIA_URL }}{{ banner.image }}">
</a>
</li>
{% endfor %}
</ul>
</div>
<div class="unslider-arrow prev"></div>
<div class="unslider-arrow next"></div>
</div>
</div>
</div>
<section>
<div class="wp">
<ul class="feature">
<li class="feature1">
<img class="pic" src="{% static "images/feature1.png" %}">
<p class="center">专业权威</p>
</li>
<li class="feature2">
<img class="pic" src="{% static "images/feature2.png" %}">
<p class="center">课程最新</p>
</li>
<li class="feature3">
<img class="pic" src="{% static "images/feature3.png" %}">
<p class="center">名师授课</p>
</li>
<li class="feature4">
<img class="pic" src="{% static "images/feature4.png" %}">
<p class="center">数据真实</p>
</li>
</ul>
</div>
</section>
<section>
<div class="module">
<div class="wp">
<h1>公开课程</h1>
<div class="module1 eachmod">
<div class="module1_1 left">
<img width="228" height="614" src="{% static "images/module1_1.jpg" %}">
<p class="fisrt_word">名师授课<br/>专业权威</p>
<a class="more" href="{% url 'course:list' %}">查看更多课程 ></a>
</div>
<div class="right group_list">
<div class="module1_2 box">
<div class="imgslide2">
<ul class="imgs">
{% for cours in banner_courses %}
<li>
<a href="{% url 'course:course_detail' cours.id %}">
<img width="470" height="300" src="{{ MEDIA_URL }}{{ cours.image }}">
</a>
</li>
{% endfor %}
</ul>
</div>
<div class="unslider-arrow2 prev"></div>
<div class="unslider-arrow2 next"></div>
</div>
{% for cours in courses %}
<div class="module1_{{ forloop.counter|add:2 }} box">
<a href="{% url 'course:course_detail' cours.id %}">
<img width="233" height="190" src="{{ MEDIA_URL }}{{ cours.image }}">
</a>
<div class="des">
<a href="{% url 'course:course_detail' cours.id %}">
<h2 title="{{ cours.name }}">{{ cours.name }}</h2>
</a>
<span class="fl">难度:<i class="key">{{ cours.get_degree_display }}</i></span>
<span class="fr">学习人数:{{ cours.students }}</span>
</div>
<div class="bottom">
<span class="fl"
title="{{ cours.course_org.name }}">{{ cours.course_org.name }}</span>
<span class="star fr">{{ cours.fav_nums }}</span>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</section>
<section>
<div class="module greybg">
<div class="wp">
<h1>课程机构</h1>
<div class="module3 eachmod">
<div class="module3_1 left">
<img width="228" height="463" src="{% static "images/module3_1.jpg" %}">
<p class="fisrt_word">名校来袭<br/>权威认证</p>
<a class="more" href="{% url 'org:org_list' %}">查看更多机构 ></a>
</div>
<div class="right">
<ul>
{% for org in course_orgs %}
<li class="{% if forloop.counter|divisibleby:5 %}five{% endif %}">
<a href="{% url 'org:org_home' org.id %}">
<div class="company">
<img width="184" height="100" src="{{ MEDIA_URL }}{{ org.image }}"/>
<div class="score">
<div class="circle">
<h2>{{ org.tag }}</h2>
</div>
</div>
</div>
<p><span class="key" title="{{ org.name }}">{{ org.name }}</span></p>
</a>
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
</div>
</section>
{% endblock %}
{% block custom_js %}
<script type="text/javascript" src="{% static "js/index.js" %}"></script>
{% endblock %}
说明1:课程
课程分is_banner=False和is_banner=True,两种课程的class属性不一样
is_banner=True的class是class="module1_2 box"
is_banner=False的class是class="module1_3 box",
所以这里要
class="module1_{{ forloop.counter|add:2 }}
说明2:课程机构
课程机构的class分为class=""和class="five"
这里要做个判断,
class="{% if forloop.counter|divisibleby:5 %}five{% endif %}
divisibleby过滤器:能不能整除
配置全局404和500
关于全局404和500,
如果不进行配置,Django会自定调用templates下的404.html和500.html
https://docs.djangoproject.com/en/2.1/ref/urls/#handler404
根目录下的urls.py文件MxOnline/urls.py
# 全局404页面配置
handler404 = 'users.views.pag_not_found'
# 全局500页面配置
handler500 = 'users.views.page_error'
# 404对应处理view
def page_not_found(request):
from django.shortcuts import render_to_response
response = render_to_response("404.html", {
})
# 设置response的状态码
response.status_code = 404
return response
Debug = True 时 404是不起作用的
ALLOWED_HOSTS = ['*']
在debug为false情况下。
我们在访问media的时候配置过用serve来取
告诉它访问media的时候去哪个路径下找
debug为True
会自动前往STATICFILES_DIRS取文件的
一旦debug改为false,django就不会代管你的静态文件,
一般静态文件通过第三方http服务器代理转发。
nignx 和 Apache都会自动代理这些静态文件
方法:我们自己url响应我们的static
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
re_path(r'^static/(?P<path>.*)', serve, {"document_root": STATIC_ROOT }),
# 全局500处理函数
def page_error(request):
from django.shortcuts import render_to_response
response = render_to_response('500.html', {})
response.status_code = 500
return response
Django+Xadmin打造在线教育系统(八)的更多相关文章
- Django+Xadmin打造在线教育系统(四)
完成授课机构的功能 模板继承 在templates目录下,新建base.html,剪切org-list.html内容到里面 编写org-list.html内容 继承base.html,将里面的面包屑和 ...
- Django+Xadmin打造在线教育系统(三)
完成登录 注册 找回密码 激活 验证码集成 将HTML文件拷贝到templates目录下,css,js,img,media,images文件夹拷贝到static文件夹下 修改index.html和lo ...
- Django+Xadmin打造在线教育系统(二)
基于xadmin的后台管理 先使用pip进行安装xadmin及其依赖包 pip install django-adminx 安装完成后卸载xadmin,保留依赖包即可 pip uninstall dj ...
- Django+Xadmin打造在线教育系统(九)
xadmin的进阶开发 因版本问题.有些配置可能无效 自定义icon xadmin的图标采用的是第三方css样式font awesome,我们可以进官网下载最新的样式替代原本的,下载地址:http:/ ...
- Django+Xadmin打造在线教育系统(七)
全局导航&个人中心&全局搜索 配置全局导航 让index页面也继承base页面,注意首页有个单独的__index.js__ base页面的导航栏也进行配置 <nav> &l ...
- Django+Xadmin打造在线教育系统(一)
系统概括: 系统具有完整的用户登录注册以及找回密码功能,拥有完整个人中心. 个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏.可以删除收藏,我的消息. 导航栏: 公开课,授课讲师 ...
- Django+Xadmin打造在线教育系统(五)
课程相关功能实现 课程列表 创建课程相关的urls.py path("course/", include('course.urls', namespace="course ...
- Django+Xadmin打造在线教育系统(六)
讲师相关功能实现 拷贝并修改teacher-list.html和teacher-detail.html, 继承base模板 # 讲师列表 path('teacher_list/', TeacherLi ...
- Django+xadmin打造在线教育平台(一)
目录 在线教育平台(一) 在线教育平台(二) 在线教育平台(三) 在线教育平台(四) 在线教育平台(五) 在线教育平台(六) 在线教育平台(七) 在线教育平台( ...
随机推荐
- SQL SERVER按多字段查找重复的数据并删除只保留一条
由于一次操作失误,给表中插入了多条重复的数据,所以就需要删除重复的数据只保留一条,一时想不到好方法,各种查资料,终于找到了,特意写到这里,方便以后自己用~ 查询: select A.n_PatentI ...
- python线程中的全局变量与局部变量
在python多线程开发中,全局变量是多个线程共享的数据,局部变量是各自线程的,非共享的. 如下几种写法都是可以的: 第一种:将列表当成参数传递给线程 from threading import Th ...
- 使用队列queue实现一个简单的生产者消费者模型
一.生产者消费者模型 我们去超市商店等地购买商品时,我们大部分人都会说自己是消费者,而超市的各大供货商.工厂等,自然而然地也就成了我们的生产者.如此一来,生产者有了,消费者也有了,那么将二者联系起来的 ...
- scrapy之多环境的选择使用
scrapy之多环境的选择使用 个人主机主机上可能存在多个python环境,当在终端中使用scrapy时,容易产生错误,无法使用到自己想使用的那个python,如何解决这个问题呢? 出现这类问题时,直 ...
- Django之admin中管理models中的表格
Django之admin中管理models中的表格 django中使用admin管理models中的表格时,如何将表格注册到admin中呢? 具体操作就是在项目文件夹中的app文件夹中的admin中注 ...
- Python之发邮件
使用模块yagmail(使用收藏的yagmail,现在的第三方模块不能解决中文乱码问题) import yagmail user='xxx@126.com' password='xxxxxx' #使用 ...
- 【学习总结】【Java】Git学习-上传本地已有代码到GitHub
< Git学成归来后的第一次实战 > 上传本地已有代码到GitHub 以之前学了一小半的Java基础教程代码为例 <深坑预警:在GitHub新建仓库那一步,不要勾选readme,不然 ...
- Java Core - 创建对象的两种方式
一.通过new关键字创建对象 Hello hello = null; // 声明一个引用 hello = new Hello(); // 创建对象 以上两行代码相当于 Hello hello ...
- Docker -d : Running modprobe bridge nf_nat failed with message: exit status 1
nf_nat 是做什么用的 - DockOne.iohttp://dockone.io/question/1384 docker-py的配置与使用 - openxxs - 博客园http://www. ...
- excel vba 不可查看
打击共享工作簿 去掉[允许多用户同事编辑,同事允许工作簿合并]