django构建blog--页面部分(eclipse+pydev)

本文介绍的是在eclipse+pydev 平台下,利用django 搭建blog的第2部分:页面部分(主要涉及3个部分:模板、视图、URL模式)

篇幅1:创建模板

blog目录下新建一个文件夹:templates,添加archive.html文件,让其显示所有blog的内容,代码如下:

	{% for post in posts %}
	<h2>{{post.title}}</h2>
	<p>{{post.timestamp}}</p>
	<p>{{post.body}}</p>
	{% endfor %}

  

篇幅2:创建视图函数

from blog.models import BlogPost
from django.template import Context,loader
from django.http import HttpResponse

# Create your views here.

def archive(request):
    posts=BlogPost.objects.all()
    t=loader.get_template("archive.html")
    c=Context({'posts':posts})
    return HttpResponse(t.render(c))

篇幅3:创建一个URL模式

1 myweb.urls.py文件进行编辑如下:

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

urlpatterns = [
    # Examples:
    # url(r'^$', 'myweb.views.home', name='home'),
    url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
]

2 在blog下新建urls.py文件,并进行编辑,如下:

#coding=utf-8
from django.conf.urls import  url,patterns
from blog.views import archive

urlpatterns=patterns('',
    url(r'^$',archive)
                                    
)

 

访问页面查看效果:http://127.0.0.1:8000/blog/

篇幅4: 优化页面-模板+日期显示和排序

1. 设置一个base.html模板,templates下新建base.html文件,编辑如下:

 1 <html>
 2 <head>
 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 4 <style>
 5 body{color:#efd;background:#453;padding:0.5em;margin:0}
 6 h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em}
 7 p{}
 8 
 9 </style>
10 </head>
11 <body>
12 {%block content%}
13 {%endblock%}
14 </body>
15 </html>

2. 修改archive.html模板,让其引用base.html模板和它的“content”块,编辑如下:

 1 <html>
 2 <head>
 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 4 <title></title>
 5 </head>
 6 <body>
 7     {%extends "base.html"%}
 8     {%block content%}
 9     {% for post in posts %}
10     <h2>{{post.title}}</h2>
11     <p>{{post.timestamp"}}</p>
12     <p>{{post.body}}</p>
13     {% endfor %}
14     {%endblock%}
15 </body>
16 </html>

再次访问页面:http://127.0.0.1:8000/blog/

3. 按日期排序,修改blog.models.py文件,增加如下代码class Meta:ordering=('-timestamp',)

from django.db import models
from django.contrib import admin

# Create your models here.
class BlogPost(models.Model):
    title=models.CharField(max_length=50)
    body=models.TextField()
    timestamp=models.DateTimeField()
    class Meta:
        ordering=('-timestamp',)
        
    
class BlogPostAdmin(admin.ModelAdmin):
    list_display=('title','timestamp')
    
admin.site.register(BlogPost,BlogPostAdmin)

查看页面

4. 优化日期显示,属于表现层的内容,修改archive.html文件中日期部分即可

<p>{{post.timestamp|date:"Y-m-d H:i:s"}}</p>

 
原文地址:https://www.cnblogs.com/nzyjlr/p/4874538.html