您的位置:首页 > 运维架构 > 网站架构

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

2017-03-18 16:39 176 查看
博客页面概要:

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


博客主页面:

列表编写思路:

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

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

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 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Django