文章详情页制作

yizhihongxing

url的设计

/usrname/article/1

/用户名/article/文章主键值

re_path(r'^(?P<username>\w+)/article/(?P<article_id>\d+)/$',views.article_detail,name='detail'),

视图函数的设计

# 七、文章详情页
def article_detail(request,username,article_id):
    # 是为了文章详情页站点的标题能够有显示
    user_obj = models.UserInfo.objects.filter(username=username).first()
    blog = user_obj.blog
    # 1.先验证当前的url是否可以使用,以防被上方的url顶替
    # return HttpResponse('ok')
    # 2.获取当前的文章对象,注意在这之前可以先判断一下用户输入的username、article_id是否存在,不存在保错
    # 注意这里需要加一个用户名参数,以防用户名不对时也可以访问到主键为1的文章
    article_obj = models.Article.objects.filter(pk=article_id,blog__userinfo__username=username).first()
    if not article_obj:
        return render(request,'error.html')

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

前端文章详情页设计

{% extends 'base.html' %}  # 个人站点页面和文章详情页都继承自base页面

{% block content %}
    <h3 class="text-center">{{ article_obj.title }}</h3>
    <div class="article_content">
        {{ article_obj.content }}
    </div>
{% endblock %}

这里继承之后,右侧的侧边栏就不见了,需要将侧边栏需要的数据在导入到文章详情的视图函数,但是这往往比较麻烦。

所有,我们可以将文章详情页制成一个inclusion_tag,方便后面需要侧边栏的时候直接导入进行!详见将侧边栏制成inclusion_tag

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:文章详情页制作 - Python技术站

(0)
上一篇 2023年4月2日 下午4:47
下一篇 2023年4月2日

相关文章

  • CORS跨域资源共享问题

    同源策略介绍 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现 请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同. 比如:我在本地上的域名是127.0…

    Python开发 2023年4月2日
    00
  • rest_framework中的分页功能

    为什么要使用分页 我们数据表中可能会有成千上万条数据,当我们访问某张表的所有数据时,我们不太可能需要一次把所有的数据都展示出来,因为数据量很大,对服务端的内存压力比较大还有就是网络传输过程中耗时也会比较大。 通常我们会希望一部分一部分去请求数据,也就是我们常说的一页一页获取数据并展示出来。 分页的三种方式 方式一:基本的分页,就是正常的查第几页每页显示多少条…

    2023年4月2日
    00
  • 小程序发布流程、小程序进度条组件、修改data里的局部数据、小程序api位置设置、首页瀑布流展示

    发布 发布流程的问题 方式一 1. 打开图片进行本地预览 2. 输入文字 & 选择相应的信息 3. 点击发布按钮 3.1 将本地图片上传到 腾讯云对象存储中COS(oss),并将COS中的图片地址返回。 3.2 将COS中的图片URL和文字等信息一起提交到后台。 BUG: 在3.2步骤时可能拿不到COS中的图片。 function onClickSu…

    Python开发 2023年3月31日
    00
  • xadmin的使用

    安装 在项目的虚拟环境下执行 pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 注意:xadmin对于不同django版本有不同的版本,一定要使用相对应的版本 在app中注册 INSTALLED_APPS = [ # … # xadmin主体模块 ‘xadmin’, # …

    Python开发 2023年4月2日
    00
  • while循环语法

    while循环 循环的基本语法和使用 count = 0 # 定义一个初始条件 while 条件: 代码1 代码2 … count += 1 # 额,每循环一次+1,用来结束循环 退出循环的两种方式 方式一:将while后面的条件改成false,退出循环!该方式就是基本语法的使用方式!注意:改成false提交后面的代码还会执行,直到第二次判断开始结束循环…

    Python开发 2023年4月2日
    00
  • 关于编辑器和解释型编译型语言

    各种语言用到的编辑器 python开发:pycharm(收费),vscode(免费),sublintext, go开发:goland(收费),vscode,国产的 java:idea(收费),eclipse(免费),MyEclipse(收费) android:androidstudio(免费),eclipse+adt 前端:webstorm(收费) php:…

    Python开发 2023年4月2日
    00
  • 操作系统启动流程和BIOS介绍

    1.BIOS介绍 我们刚刚买回来的电脑裸机是可以直接启动的,这是由于生产厂商在电脑出厂的时候就在电脑里编写了一个只可读的系统功能BIOS,该系统被写入了ROM(只读内存中) BIOS是一个过渡性的操作系统,当安装了window等其他操作系统时,该系统会被快速的代替 2.操作系统的启动流程 1.计算机通电2.BIOS开始运行,检测硬件:cpu、内存、硬盘等3.…

    2023年4月2日
    00
  • 源码分析之序列化器的many关键字

    在序列多个数据时,我们需要指定一个关键字many=True 这是为什么呢? 其实是,当序列化器产生对象时,传入参数many和不传入会生成两个不同的对象!! 这是怎么实现的呢?? 1.类的对象生成–先调用类的__new__方法生成一个空对象2.对象 = 类名(name=‘lz’)–会触发类的__init__方法,产生一个有属性的对象3.类的__new__方…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部