Skip to main content

首页功能实现

#首页功能实现

目录结构如下:

├── app
│   ├── __init__.py
│   ├── models.py
│   ├── routes.py
│   └── templates
│   │ ├── base.html
│   │ ├── about.html
│   │ ├── index.html
│   ├── static
│   │   ├── css
│   │   ├── images
│   │   └── js
├── manage.py
├── migrations
└── venv

routes.py代码如下:

from flask import render_template
from sqlalchemy import desc
from app import app
from app.models import Course


@app.route('/')
def index():
# 获取免费课程数据,学习人数从高到低,前6条
free_course = Course.query.filter_by(original_price=0).order_by(
desc('learner_count')).limit(6).all()
# 热门课程,评分由高到低
hot_course = Course.query.filter(Course.original_price > 0).order_by(
desc('learner_count')).limit(6).all()

return render_template('index.html', free_course=free_course, hot_course=hot_course)


@app.route('/about')
def about():
return render_template('about.html')

index.html代码如下:

{% extends 'base.html' %}
{% block content %}
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="../static/images/banner1.png"
class="d-block w-100" alt="..." width="100%" height="380px">
</div>
<div class="carousel-item">
<img src="../static/images/banner2.png"
class="d-block w-100" alt="..." height="380px">
</div>
</div>
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<div class="course_list" >
<div style="text-align:center;padding-top:20px;">
<h3>
<img src="../static/images/title_left.png" height="28px">
<span>免费课程</span>
<img src="../static/images/title_right.png" height="28px">
</h3>
</div>
<div class="container">
<div class="row" style="text-align:center;">
{% for course in free_course %}
<div class="col-sm-4" style="padding: 20px">
<a href="/course/{{course.course_id}}" style="text-decoration: none;color:inherit;">
<div class="card" style="height:280px">
<img src="{{ course.big_img_url }}" class="card-img-top"
alt="..." height="170px">
<div class="card-body">
<p class="card-title" style="font-weight: bold;">{{ course.product_name }}</p>
<p class="card-text">免费</p>
</div>
</div>
</a>
</div>
{% endfor %}
</div>
</div>
</div>

<div class="course_list" >
<div style="text-align:center;padding-top:20px;">
<h3>
<img src="../static/images/title_left.png" height="28px">
<span>热门课程</span>
<img src="../static/images/title_right.png" height="28px">
</h3>
</div>
<!--热门课程-->
<div class="container">
<div class="row" style="text-align:center;">
{% for course in hot_course %}
<div class="col-sm-4" style="padding: 20px">
<a href="/course/{{course.course_id}}" style="text-decoration: none;color:inherit;">
<div class="card" style="height:280px">
<img src="{{course.big_img_url}}" class="card-img-top"
alt="..." height="170px">
<div class="card-body">
<p class="card-title" style="font-weight: bold;">{{ course.product_name}}</p>
<p class="card-text">¥{{ course.original_price }}元</p>
</div>
</div>
</a>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock %}