首页列表显示全部问答,完成问答详情页布局。

本文介绍了一个简单的问答网站的前后端实现方式,包括使用 Flask 框架搭建后端服务,进行数据库操作来管理和展示问答内容;前端则采用 HTML 结合 Bootstrap 实现了列表展示和详情页布局。
  1. 首页列表显示全部问答:
    1. 将数据库查询结果传递到前端页面 Question.query.all()
    2. 前端页面循环显示整个列表。
    3. 问答排序
  2. 完成问答详情页布局:
    1. 包含问答的全部信息
    2. 评论区
    3. 以往评论列表显示区。
  3. 在首页点击问答标题,链接到相应详情页。

代码如下:

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
      <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>

</head>
<body>

<nav class="navbar navbar-default" role="navigation">
    <div class="container-fluid">
    <div class="navbar-header">
        <a class="navbar-brand" href="#">python</a>
    </div>
    <div>
        <ul class="nav navbar-nav">
            <li class="active"><a href="#">登录</a></li>
            <li><a href="#">注册</a></li>
            <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                    首页
                    <b class="caret"></b>
                </a>
                <ul class="dropdown-menu">
                    <li><a href="#">java</a></li>
                    <li><a href="#">EJB</a></li>
                    <li><a href="#">Jasper Report</a></li>
                    <li class="divider"></li>

                </ul>
            </li>
            <li class="active"><a href="#">问答</a></li>
        </ul>
    </div>
    </div>
</nav>

<ul class="list-group">

    <li class="list-group-item" style="width: 800px">


     <a class="wrap-img" href="#" target="_blank">
      <img src="http://www.bookmarkye.com/3.jpg" width="50px" >
    </a>
      <span class="glyphicon glyphicon-left" aria-hidden="true"></span>
        <a  href="#" target="_blank">{{ user }}</a>
        <br>
         <a  href="#">{{ title }}</a>
     <span class="badge">{{time  }}</span>
              <p style="">{{ detail }}
    </p>


    </li>
     {% for foo in questions %}
         <li class="list-group-item" style="width: 800px">


     <a class="wrap-img" href="#" target="_blank">
      <img src="http://www.bookmarkye.com/3.jpg" width="50px" >
    </a>
      <span class="glyphicon glyphicon-left" aria-hidden="true"></span>
        <a  href="#" target="_blank">{{foo.author.username }}</a>
        <br>
         <a  href="{{ url_for('detail',question_id=foo.id)}}">{{ foo.title }}</a>
     <span class="badge">{{ foo.creat_time }}</span>
              <p style="">{{ foo.detail }}
    </p>
  {% endfor %}

</ul>

</body>
</html>

detail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>


</head>
<body>

<div class="container">
    <div class="row clearfix">
        <div class="col-md-2 column">
        </div>
        <div class="col-md-6 column">

            <p>
             <h3>这是标题</h3>
            </p>

            <p>
                <textarea>这里输入评论内容</textarea>
            </p>
            <p>

            </p> <button type="button" class="btn btn-default">发送</button>
            <h1>用户评论</h1><br>
            <ul>

                <li class="list-group-item">这是第一条评论</li>
                <li class="list-group-item">这是第二条评论</li>
                <li class="list-group-item">这是第三条评论</li>
            </ul>
        </div>
        <div class="col-md-4 column">
        </div>
    </div>
</div>
</body>
</html>

py

from flask import Flask
from flask import render_template,request,redirect,url_for,session
import config
from functools import wraps
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)

class User(db.Model):
    __tablename__ = 'user'
    # 建立一个表user
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(20),nullable=False)
    password = db.Column(db.String(20),nullable=False)
    say = db.Column(db.String(50))

# db.create_all()

class Question(db.Model):
    __tablename__ = 'question'

    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(100),nullable=False)
    detail = db.Column(db.Text,nullable=False)
    creat_time = db.Column(db.DateTime,default=datetime.now)
    author_id=db.Column(db.Integer,db.ForeignKey('user.id'))
    author=db.relationship('User',backref=db.backref('question'))

# db.create_all()

#添加数据
# user=User(username='hua',password='11111')
# db.session.add(user)
# db.session.commit()
#


# 添加数据
# question=Question(title='huangdahua1',detail='111')
# db.session.add(question)
# db.session.commit()

@app.route('/')
def index():
    context={
        'user':'huadahua',
        'title':'大家好”',
        'time':'2017-09-29',
        'detail':'这是我的python',
        'questions':Question.query.order_by('-creat_time').all()

    }
    return render_template('index.html',**context)


@app.route('/detail/<question_id>')
def detail(question_id):
    quest=Question.query.filter(Question.id==question_id).first()
    return render_template('detail.html',ques=quest)

if __name__ == '__main__':
    app.run()

运行结果:

转载于:https://www.cnblogs.com/-064/p/7942824.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值