首页 > 其他分享 >BBS个人站点功能思路总结

BBS个人站点功能思路总结

时间:2023-01-12 20:55:07浏览次数:30  
标签:obj 个人 site 站点 nbsp article 思路 BBS

目录

BBS个人站点功能思路总结

一、个人站点功能编写思路概览

  • 首先要开设路由紧接着要写视图函数在建页面
  • 其次考虑逻辑判断是该个人站点与否要返回两个页面
  • 再补充细节 模板的继承加分页器创建CSS个人样式

二、个人站点功能编写思路详细

1.开始个人站点路由

    # 8.个人站点接口
    path('<str:username>/', views.site_func)

2.写视图函数

def site_func(request, username):
    site_obj = models.Site.objects.filter(site_name=username)
    if not site_obj:
        return render(request, 'errorPage.html')

3.如果没有此个人站点则展示404page


<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link rel="icon" href="//common.cnblogs.com/favicon.ico" type="image/x-icon" />
    <title>404 页面不存在 - BBS</title>
    <style type='text/css'>
        body {
            margin: 8% auto 0;
            max-width: 400px;
            min-height: 200px;
            padding: 10px;
            font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
            font-size: 14px;
            padding-right: 200px;
            position: relative;
        }
        p { color: #555;margin: 15px 0px; }
        img { border: 0px; }
        .d { color: #404040; }
        .robot img { max-width: 192px; }
        .robot { position: absolute; top: 0; right: 0; }
    </style>
</head>
<body>
    <p style="margin-left: 5px;"><a href="/home/"><img src="media/404logo.jpeg" style="height:45px" alt="cnblogs"></a></p>
    <div style="margin-top:20px">
        <p style=""><b style="">404.</b> 抱歉,您访问的资源不存在。</p>
        <p class="d">可能是网址有误,或者对应的内容被删除,或者处于私有状态。</p>
        <p style="color:#777;">代码改变世界,联系邮箱 [email protected]</p>
    </div>
    <div class="robot"><a href="//www.cnblogs.com/cmt/articles/13940458.html"><img src="media/404-robot.png" alt="404 robot" /></a></div>
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-4CQQXWHK3C"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'G-4CQQXWHK3C');
    </script>
</body>
</html>

4.如果有这个个人站点就返回一个页面

    # 查询个人站点是否存在
    site_obj = models.Site.objects.filter(site_name=username).first()
	return render(request, 'sitePage.html', locals())

5.编写个人站点页面,跟首页类似 用模板的继承

{% extends 'homePage.html' %}


{% block css %}
    <link rel="stylesheet" href="media/css/{{ site_obj.site_theme }}/">
{% endblock %}

{% block title %}
    {{ site_obj.site_title }}
{% endblock %}


{% block content %}
        <div class="col-md-2">
            {% load mytag %}
            {% mymenu username %}
        </div>
        <div class="col-md-10">
            {% for article_obj in article_queryset %}
                <div class="media">
                         <h4 class="media-heading"><a href="/{{ article_obj.site.userinfo.username }}/article/{{ article_obj.pk }}/">{{ article_obj.title }}</a></h4>
                          <div class="media-left">
                            <a href="#">
                              <img class="media-object" src="/media/{{ article_obj.site.userinfo.avatar }}/" alt="..." width="80">
                            </a>
                          </div>
                          <div class="media-body" style="padding:10px">
                            {{ article_obj.desc }}
                          </div>
                            <br>
                            <div class="pull-right">
                                <span>posted&nbsp;&nbsp;@</span>
                                <span>{{ article_obj.create_time|date:'Y-m-d H:i:s' }}&nbsp;&nbsp;</span>
                                <span>{{ article_obj.site.userinfo.username }}&nbsp;&nbsp;</span>
                                <span class="glyphicon glyphicon-thumbs-up">{{ article_obj.up_num }}&nbsp;&nbsp;</span>
                                <span class="glyphicon glyphicon-thumbs-down">{{ article_obj.down_num }}&nbsp;&nbsp;</span>
                                <span class="glyphicon glyphicon-comment">{{ article_obj.comment_num }}&nbsp;&nbsp;</span>
                            </div>
                        </div>
                <hr>
            {% endfor %}
        </div>
{% endblock %}

6.编写完整的个人站点后端代码

def site_func(request, username, **kwargs):
    """
    :param kwargs: 接收多余的关键字参数 代码通过该参数是否有值从而得出是个人站点还是侧边栏筛选
    """
    # 查询个人站点是否存在
    site_obj = models.Site.objects.filter(site_name=username).first()
    if not site_obj:
        return render(request, 'errorPage.html')
    # 查询个人站点下所有的文章
    article_queryset = models.Article.objects.filter(site=site_obj)
    if kwargs:
        condition = kwargs.get('condition')
        params = kwargs.get('params')
        if condition == 'category':
            article_queryset = article_queryset.filter(category_id=params)
        elif condition == 'tag':
            article_queryset = article_queryset.filter(tags__pk=params)
        else:  # 年-月
            year, month = params.split('-')
            article_queryset = article_queryset.filter(create_time__year=year, create_time__month=month)
    '''如果文章较多也应该添加分页器'''

    return render(request, 'sitePage.html', locals())

标签:obj,个人,site,站点,nbsp,article,思路,BBS
From: https://www.cnblogs.com/almira998/p/17047896.html

相关文章

  • 【树莓派+arduino+opencv】实现小车无人驾驶-思路汇总
    搭建小车(硬件)电源(12.8V电压)18650电池(三块)+LM2596SDC-CD稳压降压模块驱动TT电机+TB6612FNG驱动模块蓝牙小车连接HC-06上位机连接HC-05(USB转TLL)通过“串口......
  • BBS项目修改密码及退出登录思路总结
    BBS项目修改密码及退出登录思路总结创建超级管理员用户和登录步骤一、修改密码编写步骤概览开设修改密码路由首页前端代码写Ajax请求回到后端继续修改密码逻辑......
  • 常用功能系列---【JWT生成Token实现接口登录认证方案思路】
    JWT生成Token实现接口登录认证方案思路方案一(双token实现无感刷新)在token中,refreshToken的作用主要是避免token过期时,前端用户突然退出登录,跳转至登录页面。但是如何实......
  • 02-RTL代码分析思路
    RTL代码分析思路(这里不进行具体代码的分析)verilog文件是以.v结尾的1RTL代码示例//Date:2023-01-09//E-mail:[email protected]//copyright:xx......
  • 火山引擎 DataTester:5 个优化思路,构建高性能 A/B 实验平台
    导读:DataTester是由火山引擎推出的A/B测试平台,覆盖推荐、广告、搜索、UI、产品功能等业务应用场景,提供从A/B实验设计、实验创建、指标计算、统计分析到最终评估上线......
  • bbs项目day05--
    昨日内容回顾根评论优化1.点击提交按钮清空评论框里面的内容2.在页面上临时渲染一个评论楼(js模板字符串)子评论业务逻辑1.切入点是回复按钮 点击回复按钮应该......
  • BBS登录功能思路总结
    BBS登录功能思路总结目录BBS登录功能思路总结一、登录功能编写步骤概览二、登录功能编写步骤详细1.开设登录接口2.写登录视图函数先返回页面3.创建登录前端页面先渲染......
  • 力扣刷题思路
    1.常看Discussion。我相信很多同学为了刷题量,解开一道题后会迫不及待地点开下一道题。更为甚者,很多同学把刷题的数量作为衡量水平的绝对标准,比如「老师,我在Leetcode刷......
  • Python 获取并分析均价思路
    1、思路:分析网页,是静态网页后,用requests建立解析。2、步骤:--建立headers方法--拼接start-URL,--构件程序控制函数main控制运行,这里代码很少,其实不用的。--requests循......
  • BBS项目之注册功能思路总结
    目录BBS项目之注册功能思路总结一、项目注册功能概览二、项目注册功能步骤详细1.开设路由跳转2.写视图函数3.创建前端html注册页面4.写forms校验类5.在views.py里注册视图......