Django学习:博客文章页面(8)

博客文章页面开发

在app下views.py中添加响应函数page(对应文章内容页面)

点击博客主页面的文章链接会跳转到文章内容页面,实际上传递了点击的文章的唯一标识(主键 也就是django自己添加的id)

因此,在page方法里面添加参数article_id来传递主键id

获取文章对象

渲染到HTML

from django.shortcuts import render
from django.http import HttpResponse
from . import models

def index(request):
    arts = models.Article.objects.all()
    return render(request,'blog/index.html',{'articles': arts})

def page(request,article_id):
    art = models.Article.objects.get(pk=article_id)
    return render(request, 'blog/page.html', {'article': art})

创建templates下的page.html(文章内容页面)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>page</title>
</head>
<body>
<h1>{{ article.title }}</h1>
<br/>
<h3>{{ article.content }}</h3>
<br/><br/>
<a href="#">修改文章</a>
</body>
</html>

关键:URL参数传递

每个响应函数对应一个URL

刚写的page响应函数多了一个参数,要在URL中体现出来

不同文章对应不同id  localhost:8000/blog/article/1     ....article/2 对应不同文章

(?P<article_id>[0-9]+) 正态表达式匹配到的数字以article_id作为组名去匹配 组名必须和响应函数中的参数名保持一致

使用(?P<>\d+)的形式捕获值给<>中得参数,比如(?P<article_id>\d+),当访问/blog/article/3时,将会将3捕获给article_id,这个值会传到views.ArticleDetailView,这样我们就可以判断展示哪个Art


在APP下的urls.py中加入

from django.conf.urls import url
from  . import views

urlpatterns = [
    url(r'^$', views.index),
    url(r'^article/(?P<article_id>[0-9]+)$', views.page),
]

打开服务器

localhost:8000/blog 到博客主页面

localhost:8000/blog/article/1 到主键为1的文章页面(数据库models里的设置)

localhost:8000/blog/article/2 到主键为2的文章页面


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值