使用了django的admin后台
很方便就能生成一系列后台方法
接下来开始添加新的功能
首先要告诉django在admin中显示那一个model以供编辑,
打开app下的model.py文件
添加一个类
from django.db import models
from django.contrib import admin
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField()
并在结尾注册model代码
admin.site.register(BlogPost)
再次调试,在admin后台中就能看到你的类的功能实现了
每一个帖子的命名都是BlogPost object,我们可以通过model.py
对列表格式进行一次设置
from django.db import models
from django.contrib import admin
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField()
class BlogPostAdmin(admin.ModelAdmin):
list_display = ("title", "timestamp")
admin.site.register(BlogPost, BlogPostAdmin)
添加一个BlogPostAdmin,并把它加到注册代码那一行。
再次打开页面,列表就美观多了
接下来开始创建blog的公共展示部分
首先在app目录下创建一个固定名称为templates的目录
添加一个名为archive.html的模版
编辑模版内容
{% for post in posts %}
<h2>{{post.title}}</h2>
<p>{{post.timestamp}}</p>
<p>{{post.body}}</p>
{%endfor%}
很通俗的一个模版版标签
for循环,从对象变量中获取了相应的值
相应的模版创建完成,
开始从数据库中读取所有blog的帖子的视图
我们在app下的views.py中输入
# Create your views here.
from django.template import loader, Context
from django.http import HttpResponse
from models import BlogPost
def archive(request): #每个django师徒函数都讲django.http.HttpRequest对象作为它第一个参数它还可以通过URLconf接受其他参数
posts = BlogPost.objects.all() #当我们办blogpost类作为django.db.model.Model的一个子类时,我们就已经获取到了django对象关系映射的全部
t = loader.get_template("archive.html") #我们只需告诉django模版的名字就能创建模版对象
c = Context({"posts":posts}) #django的模版渲染是由一个字典类的对象context提供的
return HttpResponse(t.render(c)) #每个django视图函数都会返回一个httpResponse对象
接下来页面就差一步了
创建一个url
分两步去执行:
第一:
在urls.py下,添加一行
url(r'^blog/?', include('blog.urls')),
第二:
在app应用程序包中再次创建一个urls.py
from django.conf.urls.defaults import *
from views import archive
urlpatterns = patterns('', url(r"^$", archive),)
现在就可以看到一个朴素的页面了