文章详情页制作

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日

相关文章

  • 微信小程序的点击事件、页面跳转、数据绑定、数据修改、获取用户信息及定位、for指令、获取用户上传图片

    小程序中实现页面跳转 对标签绑定点击事件 data是点击时传入的参数 <view bindtap=”clickMe” data-nid=”123″ data-name=”SD” >点我跳转</view> /** * 用户点击事件 */ clickMe(e){ console.log(e) var nid = e.currentTarg…

    Python开发 2023年4月2日
    00
  • JWT的介绍和使用

    JWT的含义 Json web token(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(sso)场景,JWT的声明一般被用来在身份提供者和服务者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其他业务逻辑所必须的声…

    2023年4月2日
    00
  • 轮播图前端

    轮播图组件 <template> <div id=”banner”> <el-carousel height=”400px”> <!– 将banner_list循环–> <el-carousel-item v-for=”item in banner_list” :key=”item”> <…

    2023年4月2日
    00
  • CORS跨域资源共享问题

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

    Python开发 2023年4月2日
    00
  • 线程

    1. 什么是线程 线程就是进程里面的执行单位,每一个进程肯定都自带一个线程,真正被cpu执行的是线程,线程是代码的执行过程,该过程中需要的资源都找对应的进程要 进程是资源的单位,线程是执行单位! 补充:同一个进程里面的多个线程资源是共享的! 2. 为啥要有线程 一个进程里面可以开设多个线程,而开设线程是不需要申请内存空间的(进程需要),因此,开设线程的消耗远…

    2023年4月2日
    00
  • django中CBV视图模式的View源码分析

    位置: 1.找到自己项目用的解释器存储位置H:\pythonProject\Lib\site-packages\django\views\generic\base.py在base.py里有一个View类 2.也可以通过from django.views import View 按住ctrl点击View会直接跳到该类的位置 CBV形式的路由 path(r’^l…

    Python开发 2023年4月2日
    00
  • xadmin的使用

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

    Python开发 2023年4月2日
    00
  • 路飞项目前端主页搭建

    前端主页 图片准备 首先把主页需要到图片资源放到项目的img文件夹下 页头组件:components/Header.vue <template> <div class=”header”> <div class=”slogan”> <p>老男孩IT教育 | 帮助有志向的年轻人通过努力学习获得体面的工作和生活&lt…

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