【python项目实战】BBS论坛(5)帖子列表展示

一、帖子中心区域是 <div class="container">

(1)在里面实现一个 <div class="row">,包含左右两个小模块区:<div class="col-md-8 left-content-panel">  和 <div class="col-md-4 right-sidebar">

其中用 django内置的 class="row",可以使两个左右模块在一行显示,col-md-8,col-md-4 分别表示左右的横向宽度(总共是12)

(2)在 左模块区 left-content-panel里,放的是帖子列表,建一个<div class="content-box">

{% for article in articles %} 循环显示所有article,再一次横向显示图片和文章,

新建一个<div class="article-box row">,把循环结果放入这个<div> 里,

包含 <div class="article-head-img col-md-3"> 和<div class="article-summary col-md-8">,

(3)右侧文章区域,标题建立一个链接

<h4><a href="{% url ‘article_detail‘ article.id %}">{{ article.title }}</a></h4>

标题下面,建立 <div class="artcile-attr">,显示文章属性,

要一行显示 使用<ul class="list-inline">,如:<li>{{ article.auther.name }}</li>

不是同一张表的信息,使用

<li>thumbup: {{ article.thumbup_set.select_related.count }}</li>

(4)因为每个帖子之间要分割,所以最后加上 <hr/>

    <div class="container">
        {% block page-container %}
            <div class="row">
                <div class="col-md-8 left-content-panel">
                    <div class="content-box">
                        {% for article in articles %}
                            <div class="article-box row">
                                <div class="article-head-img col-md-3">
                                    <img src="/static/imgs/test.jpg">
                                </div>
                                <div class="article-summary col-md-8">
                                    <h4><a href="{% url ‘article_detail‘ article.id %}">{{ article.title }}</a></h4>
                                    <div class="artcile-attr">
                                        <ul class="list-inline">
                                            <li>{{ article.auther.name }}</li>
                                            <li>{{ article.publish_date }}</li>
                                            <li>thumbup: {{ article.thumbup_set.select_related.count }}</li>
                                            <li>comment: {{ article.comment_set.select_related.count }}</li>
                                        </ul>
                                    </div>
                                    <p>{{ article.summary }}</p>
                                </div>
                            </div>
                            <hr/>
                        {% endfor %}

                    </div>
                </div>
                <div class="col-md-4 right-sidebar">
                    bar
                </div>
            </div>
        {% endblock %}

    </div> <!-- /container -->

二、在展示帖子信息时,遇到一个问题,之前建模的时候,文章表里面没有一个列是表示文章简介的,所以现在要加上去

models.py 加入

class Article(models.Model):
summary = models.CharField(max_length=255)

再执行

python manage.py makemigrations

python manage.py migrate

三、index.html里面使用的新样式,需要自己编辑

css目录下新建custom.css

.left-content-panel{
    border: 2px solid crimson;
}

.right-sidebar{
    border: 2px solid black;
}

.article-head-img img{
    height: 125px;
    width: 200px
}

.article-summary{
    margin-left: 20px;
}

然后在index.html里面加入

    <!-- Custom styles for this template -->

    <link href="/static/bootstrap/css/custom.css" rel="stylesheet">

四、之前在文章列表里,每个标题都加了超链接,点击跳转每个文章详细信息

url.py

    url(r‘^article/(\d+)/$‘,views.article_detail,name="article_detail")

views.py

from django.core.exceptions import ObjectDoesNotExist

def article_detail(request,article_id):
    try:
        article_obj = models.Article.objects.get(id=article_id)
    except ObjectDoesNotExist as e:
        return render(request,‘404.html‘,{‘err_msg‘:u"文章不存在!"})
    return render(request,‘article.html‘,{‘article_obj‘:article_obj})

templates里面新建

404.html

{% extends ‘index.html‘ %}

{% block page-container %}
    <h1 style="font-size: 200px" >404</h1>
    <h3>{{ err_msg }}</h3>
{% endblock %}

article.html

{% extends ‘index.html‘ %}

{% block page-container %}
    <div class="artile-detail"></div>
        <h4>{{ article_obj.title }}</h4>
        <p>{{ article_obj.content }}</p>
{% endblock %}
时间: 2024-10-03 17:28:51

【python项目实战】BBS论坛(5)帖子列表展示的相关文章

Python之路【第十八篇】Django小项目简单BBS论坛部分内容知识点

开发一个简单的BBS论坛 项目需求: 1 整体参考“抽屉新热榜” + “虎嗅网” 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用户展示 6 允许登录用户发贴.评论.点赞 7 允许上传文件 8 帖子可被置顶 9 可进行多级评论 知识必备:(注:没有必备下面知识的同学,请返回去看会之后再看下面的内容防止蒙了~~!) 1 Django 2 HTML\CSS\JS 3 BootStrap 4 Jquery 设计表结构 1.表结构重要性 在开发任何项目的时候,设计到数据库,

Django小项目简单BBS论坛

开发一个简单的BBS论坛 项目需求: 1 整体参考"抽屉新热榜" + "虎嗅网" 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用户展示 6 允许登录用户发贴.评论.点赞 7 允许上传文件 8 帖子可被置顶 9 可进行多级评论 知识必备:(注:没有必备下面知识的同学,请返回去看会之后再看下面的内容防止蒙了~~!) 1 Django 2 HTML\CSS\JS 3 BootStrap 4 Jquery 设计表结构 1.表结构重要性 在开发

Android项目实战(八):列表右侧边栏拼音展示效果

原文:Android项目实战(八):列表右侧边栏拼音展示效果 之前忙着做项目,好久之前的技术都没有时间总结,而发现自己的博客好多写的技术都比自己掌握的时候晚了很多.不管怎么样,写技术博客一定是一个想成为优秀程序猿或者已经是优秀程序猿必须做的.好吧,下面进行学习阶段. 记得很久之前就使用过侧边拼音栏了,先看下它的效果,一个列表,列表的右侧有一个拼音列表,当列表发生滑动的时候,拼音列表也随着滑动,而规律就是拼音列表滑动的位置为显示列表的当前位置的文字的首字母决定,当然,直接点击拼音列表的一个位置,显

Python项目实战:福布斯系列之数据采集

1 数据采集概述 开始一个数据分析项目,首先需要做的就是get到原始数据,获得原始数据的方法有多种途径.比如: 获取数据集(dataset)文件 使用爬虫采集数据 直接获得excel.csv及其他数据文件 其他途径… 本次福布斯系列数据分析项目实战,数据采集方面,主要数据来源于使用爬虫进行数据采集,同时也辅助其他数据进行对比. 本文主要是介绍使用爬虫进行数据采集的思路和步骤. 本次采集的福布斯全球上市企业2000强排行榜数据,涉及年份从2007年到2017年,跨越10多年. 本次采集的目标网站,

Jenkins部署Python项目实战

一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Jenkins强大的插件功能,轻松实现CI/CD,但如果部署多项目到同一台服务器涉及环境一致性问题,对此可以利用容器技术Docker解决,也可以利用Python虚拟环境例如virutalenv或conda等优秀等工具解决,在此由于后期根据requirements来安装依赖包比较慢,且后期需要将Pytho

【python项目实战】BBS论坛 (1)搭建项目框架

一.准备工作: Windows7-64位 python 2.7 mysql version: 5.7.12 django 1.9.5 IDE开发工具:pycharm 2.7 二.设计表结构 主要涉及点: 1.表的ER图,要设计逻辑,有哪些表,每个表有哪些属性 2.models的 模型常用字段要熟练,本次使用的有: CharField ForeignKey ImageField TextField DateTimeField BooleanField IntegerField ManyToMany

【python项目实战】BBS论坛(2)页面初始设计

一.下载一个页面模板(当然也可以自己写) 找到如下页面,然后右键--另存为,全部保存 http://v3.bootcss.com/examples/navbar-fixed-top/# 下载下来的文件就是初步模板 二.编辑settings.py 1.加入 静态页面路径,并在项目目录里面新建statics文件夹 STATICFILES_DIRS = (     "%s/%s" %(BASE_DIR, "statics"), ) 2. 加入DIRS,默认生成的是空 DI

【python项目实战】BBS论坛(3)页面输出数据,及跳转

一.主页输出简单数据 核心代码; index.html     <div class="container">         {% block page-container %}             {{articles}}             {{ request.path }}         {% endblock %}     </div> <!-- /container --> views.py def index(request

【python项目实战】BBS论坛(4)尝试页面美化

页面美化--选中的板块变灰色 使用标签<li class="active"> </li> 需要把显示的板块名元素,addClass("active") 那就需要找出当前显示的板块名称是哪个? 板块显示是根据板块id来设计url的,那通过获取当前页面url的path就能找到是哪个板块了 使用的变量是--{{ request.path }} 要找到匹配标签的表达式:$("#navbar a[href='{{ request.path }