博客网站(7)-博客的主页面及文章内容页面

博客页面概要:

  博客主页面
       ├───文章标题列表(超链接)
       |___发表博客按钮(超链接)
   博客文章内容页面
       ├───标题
       ├───文章内容
       |___修改文章按钮(超链接)
   博客撰写页面
        ├───标题编辑栏
        ├───文章内容编辑区域
        |___提交按钮

博客主页面:

列表编写思路:

取出数据库中所有文件对象

将文章对象打包成列表传递到前端

views.py

# coding:utf-8
from django.shortcuts import render
from . import models

def index(request):
    articles = models.Article.objects.all()   #从数据库中取数据得到一个列表
    return render(request, 'index.html', {'articles':articles})    #传递给前段

前端列表把文章以标题超链接的形式逐个列出

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>nic的博客</title>
</head>
<body>
<h2>
    <a href="  ">添加新文章</a>      <!--添加新文章的超链接-->
</h2>

{% for article in articles %}      <!--列表for循环-->
      <a href="  ">{{article.title}}</a>   <!--文章标题超链接-->
     <br/>
{% endfor %}     <!--注意for循环结束标志 -->

</body>
</html>
博客文章内容页面:
在app下views.py中添加响应函数article_page以响应对应文章内容页面:

def article_page(request,article_id):    #添加参数article_id来传递主键id
    article = models.Article.objects.get(pk=article_id)    #根据主键获取到相应文章对象
    return render(request, 'article_page.html', {'article': article})

新建article_page.html:

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

URL参数传递 :

每个响应函数对应一个URL

在app下的urls.py中设置响应函数对应的URL

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

 (?P<article_id>[0-9]+) 匹配到的数字以article_id作为组名去匹配,组名必须和响应函数中的参数名保持一致,使用(?P<>\d+)的形式将捕获值传给给<>中的参数,比如(?P<article_id>\d+),当访问/blog/article/3时,将会将3捕获给article_id,从而从数据库中取出相应主键的article

Django中的超链接:

template中可以用 {% url  ‘app_name : url_name’   param %}来表示目标地址

其中

app_name:应用命名空间的名称

url_name:链接名

param:地址的参数

app_name和url_name 都在url中配置

根urls.py中添加:

url(r'^nic/', include('blog.urls',namespace='article'))  #该应用的命名空间

app下的url中添加:

url(r'^article/(?P<article_id>[0-9]+)$', views.article_page,name='article_page')
相应的HTML文件的超链接中添加:
<a href="{% url 'blog:article_page' article_id %}">{{article.title}}</a>   <!--文章标题超链接-->
 则第一篇文章对应的URL为localhost:8000/nic/article/1 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值