Django博客系统开发03

路由Django URL

Django框架通过urls.py文件中的规则对系统进行路由控制。首先我们在主路由hzsite/urls.py中引入hzblog的路由设置:

from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'', include('hzblog.urls')),
]

然后,在hzsite/urls.py中设置具体的路由规则

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

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

这里我们添加了一条规则,当用户访问网站根目录时,有views中的index方法处理。下面我们去views.py中添加index方法对请求进行处理。

from django.shortcuts import render
from .models import Post

def index(request):
    posts = Post.objects.filter(published_date__isnull=False).order_by('-published_date')
    return render(request, 'blog/index.html', {'posts': posts})

对于路由发来的请求,index函数先调用models查找出符合要求的文章list,然后调用render方法将获取到的数据render到index.html这个模板页面。

最后,我们只需要创建这个index.html模板文件即可。

mkdir -p hzblog/templates/blog
vim hzblog/templates/blog/index.html

模板如下

<html>
<head>
    <title>ZIVER'S</title>
</head>
<body>
    <div>
        <h1><a href="/">ZIVER'S</a></h1>
    </div>
    {% for post in posts %}
    <div>
        <p>published: {{ post.published_date }}</p>
            <h1><a href="">{{ post.title }}</a></h1>
            <p>{{ post.text|linebreaks }}</p>
    </div>
    {% endfor %}
</body>
</html>

这时候,开启服务器,访问我们的主页就能看到如下页面了

6

由于没有加入样式,所以现在的页面比较简陋。这里只显示了Sample 02这篇文章,是因为我们之前在shell中只publish了这一篇,而在index方法中使用过滤器只筛选出了published文章。

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注