文章详情页制作
  XWVJhDBKEkMp 2023年11月02日 47 0

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   104   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   72   0   0 Python
  fwjWaDlWXE4h   2024年05月17日   38   0   0 Python
  YpHJ7ITmccOD   2024年05月17日   39   0   0 Python
XWVJhDBKEkMp