我们的博客现在已经实现了博客列表的查看,博客的查看。现在该是我们实现创建和更新博客的时候了。
要实现博客的创建和更新,我们需要学习Django表单的相关知识。
在处理表单的过程中,Django表单功能做了哪些工作呢?
- 传递数据的准备和重建
- 为数据创建HTML表单
- 从客户端接收和处理提交的表单和数据
Django Form类是系统的核心组件。在django中, 模型描述的是一个对象的逻辑架构,这绵行为,它显现给我们的方式。与此类似,Form类描述的是一个表单和决定它是如何工作和显示的。
一个模型类的字段映射到数据库的字段,与此类似,表单类的字段映射到HTML中表单的<input>元素。
首先,创建一个创建博客的模板文件edit.html
My Blog
恩,在主页上添加创建博客的链接(先不管美化,实现功能再说)
tmyyss@ubuntu:~/python/django/myproject/blog/templates/blog$ more index.htmlMy Blog
{ {blog.title}}
Published {
{blog.published_time}}{
{blog.text | linebreaks}} {% endfor %} {% else %}No blog was published
{% endif %}接下来,添加Url
from django.conf.urls import patterns,urlfrom blog.views import *urlpatterns = patterns('', url(r'^$',index,name='index'), url(r'^edit/$',edit,name='edit'), url(r'^(?P\d+)/$',detail,name='detail'),)
添加url对应的view函数
from django.shortcuts import render,get_object_or_404,redirectfrom blog.models import Blog,PostFormimport datetimedef index(request): blogs=Blog.objects.all() return render(request,'blog/index.html',{ 'blogs':blogs})def detail(request,id): blog=get_object_or_404(Blog,pk=id) return render(request,'blog/detail.html',{ 'blog':blog})def edit(request): if request.method=='POST': form=PostForm(request.POST) if form.is_valid(): post=form.save(commit=False) post.user=request.user post.created_time=datetime.datetime.now() post.published_time=datetime.datetime.now() post.save() return render(request,'blog/detail.html',{ 'blog':post}) else: form=PostForm() return render(request,'blog/edit.html',{ 'form':form})
好了,启动服务器,输入网址后,我们就可以添加博客文章了。