Django开发博客-(5)完善主页开发_1

下面我们开始着手制作博客主页面的开发
首先分析一下一个博客具有哪些必要的东西:
页面包含:

  • 博客主页面
  • 博客文章页面
  • 博客书写(修改)页面

下面分布进行讲解

博客主页面

博客主页面包括:

  • 文章标题列表,具有超链接功能
  • 可以发表新的博客

标题列表编写思路:

  1. 列出数据库的文章对象
  2. 文章对象制作成列表,传递给前端显示
  3. 前段页面把文章标题以超链接形式列出

其中列出标题列表需要用到模板的for循环等等,这里介绍一下。
格式:{% for xxx in xxxs %}
HTML语句
{% endfor %}
还有一个模板过滤器的东西
格式:{{ value | filter }}
例如:{{string | length }}
这样之后就不会显示这个字符串,就会显示这个字符串长度,并且可以叠加多个过滤器{{value | filter1 | filter2 |… }}

了解完毕之后开始代码书写:
首先让views响应主页之后返回所有的列表对象。

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

然后修改前端的html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>博客</title>
</head>
<body>

{% for article in articles %}
    <a href="">{{ article.title }}</a>
    <br/>
{% endfor %}

<h3>
    <a href="">增加新文章</a>
</h3>

</body>
</html>

其中href是预留的超链接。
刷新页面就会出现以下页面
这里写图片描述
图1 完善主页
同时如果在数据库中添加新文章也可以显示出来。

博客文章页面

下面实现点击超链接显示博客具体文章
可想而知一个不同类型的html页面,肯定是要对应一个不同的html文件格式的,所以我们现在需要实现第二种页面肯定要增加一个html文件。
创建一个article_page代表了每一个博客的页面。
点击超链接肯定需要有一个响应,所以我们需要再次添加一个函数响应在views中:

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

这个函数多了一个参数article_id他是为了获取点击的博客文章列表的第几个,它和数据空的id相对应。获取到这个页面返回给前端。

接下来就需要修改前端代码了
修改html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>博客</title>
</head>
<body>

<h2>{{ article.title }}</h2>
<br/>
<h3>{{ article.content }}</h3>
<br/>
<br/>
<a href="">编辑文章</a>

</body>
</html>

顺便添加了一个编辑文章的超链接

然后在urls中添加响应的链接

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

特别注意:Url正则中的组名必须和参数一致(传入article_page的参数)

接下里输入
127.0.0.1:8000/blog/article/1 就可查看相对应的文章了。但是此时还没有实现超链接。

实现超链接

超链接目标地址是在href后面,模板中可以使用:
{% url ‘app_namespace : url_name’ param %}
来配置,其中app_namespace 为应用名称空间。

配置根目录的urls中,可以写在include()的第二个参数位置:

url(r'^blog/', include('myblog.urls', namespace='myblog'))

假如跟目录没有使用include引用另一个url配置文件,则可以使用在应用下url()的第三个参数位置,name=’article’
这里使用第一种方式:
根目录urls和应用urls分别改动如下:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^blog/', include('myblog.urls', namespace='myblog'))
]
urlpatterns = [
    url(r'^blog/$', views.myblog),
    url(r'^article/(?P<article_id>[0-9]+)$', views.article_page, name='article_page'),
]

然后修改html文件

{% for article in articles %}
    <a href="{% url 'myblog:article_page' article.id %}">{{ article.title }}</a>
    <br/>
{% endfor %}

article.id作为参数传入
然后就实现了点击对应的标题进入。
这里写图片描述
图2 实现超链接

博客书写(编辑)页面

页面内容包括:

  1. 标题栏编辑
  2. 文章内容编辑
  3. 提交按钮

同理可知还需要增加一个html文件实现这个页面。edit_page.html
首先修改views增加一个响应

def edit_page(request):
    return render(request, 'myblog/edit_page.html')

随后将响应添加到urls

urlpatterns = [
    url(r'^blog/$', views.myblog),
    url(r'^article/(?P<article_id>[0-9]+)$', views.article_page, name='article_page'),
    url(r'^edit/$', views.edit_page, name='edit_page')
]

最后修改前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>编辑</title>
</head>
<body>

<form action="" method="post">

    <label>博客标题
        <input type="text" name="title" style="width:300px;"/>
    </label>
    <br/>

    <label>博客内容
        <input type="text" name="content" style="width:300px;height:200px"/>
    </label>
    <br/>
    <input type="submit">
</form>

</body>
</html>

使用的表单类型,下面是得到的页面
这里写图片描述
图3 编辑页面

接下来就需要编辑响应的函数了
本章紧接着下一章内容(篇幅原因…)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值