请教用Django框架写博客:修改文章功能的实现方法

2012-03-07 12:20:58 +08:00
 Angus
我是一个编程初学者,正在学着用Django编写一个简单的博客程序。现在遇到了一个问题:

如何不用Django自带的admin模块实现对已发布的文章进行修改?把文章的内容读到一个form里,然后重新编辑?
4204 次点击
所在节点    Python
6 条回复
Angus
2012-03-09 15:06:46 +08:00
求帮助。。
itommy
2012-03-09 15:07:33 +08:00
@shawiz sean总要不要出来解释解释
zxwind
2012-03-09 15:21:55 +08:00
Angus
2012-03-09 17:12:14 +08:00
@zxwind 谢谢
@shawiz 额,我的表达能力果然有问题。我不想用django.contrib.admin功能,想自己写一个。
看完@zxwind提供的文档,我发现原来我之前想的这么离谱。再google了一下,实现了这个功能。


@login_required
def edit(request, blog_id):
blog = get_object_or_404(Blog, pk=int(blog_id))
if request.method == 'POST':
form = BlogForm(request.POST, instance=blog)
if form.is_valid():
blog=form.save()
blog.save()
return HttpResponseRedirect('/blog/')

else:
form = BlogForm()

return render_to_response('blog/edit.html', {'form': BlogForm(instance=blog) })


现在就是不太明白为什么最后一行需要instance=blog,我再查查资料,谢谢各位。
shawiz
2012-03-09 18:52:29 +08:00
@Angus 呵呵抱歉,理解错误。其实刚发完贴就发现你有个”不“字,不过已经晚了。最后一行 instance=blog, 我想是要把 request.method == ’GET' 的时候把 blog instance 原来的数据 populate 到 form 里去,这样 form 一打开就带有未修改前的数据。
shawiz
2012-03-10 00:10:01 +08:00
@itommy 躺枪!

没完全明白你的意思,是不是就想用自带的 admin 来修改你的文章?admin 里面如果有你文章的 model, 会有提供 form 给你直接修改。如果你文章 model 不在 admin 里面,在你的 app folder 里面加一个 admin.py

from django.contrib import admin
from models import Post

admin.site.register(Post)


(假设你的文章 model 叫 Post)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/28961

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX