【发布时间】:2012-09-01 06:31:33
【问题描述】:
我的博客应用中有一个“添加帖子”页面。我想添加一个“预览页面”。我应该在保存帖子之前点击预览按钮。为了这 ;我在我的 models.py 中创建了两个新字段:titlePreview 和 bodyPreview。
我正在做的是将表单数据保存到这两个字段中,以便在发布前预览页面。
但我做不到。我有一个 addPost 视图。在这里:
@login_required(login_url='/panel')
def addpost(request):
if request.method=="POST":
form = addForm(request.POST)
if form.is_valid():
titleform=form.cleaned_data['title']
bodyform=form.cleaned_data['body']
checkform=form.cleaned_data['isdraft']
owner = request.user
n = Post(title = titleform, body = bodyform, isdraft=checkform, owner=owner)
n.save()
return HttpResponseRedirect('/admin/')
else:
form=addForm()
return render(request,'add.html',{'form':form,})
return render(request,'add.html',{'form':form,})
这是我的models.py:
class Post(models.Model):
owner = models.ForeignKey(User)
title = models.CharField(max_length = 100)
body = models.TextField()
bodyPreview = models.TextField()
titlePreview = models.CharField(max_length=100)
slug = AutoSlugField(populate_from='title',unique=True)
posted = models.DateField(auto_now_add=True)
isdraft = models.BooleanField(default=False)
def __unicode__(self):
return self.title
@permalink
def get_absolute_url(self):
return ('view_blog_post',None, {'postslug':self.slug})
现在我认为我应该创建一个不同的视图,例如“preview_view”,它必须从 addpost.html 重定向到“preview.html”。
但我无法连接点。
谢谢
【问题讨论】:
-
也许这很愚蠢,但是...如果您只是通过 POST 将所需的数据传递给
preview_view会怎样?这样您就不需要在数据库中保存任何内容。 -
我该怎么做?你能再具体一点吗?
-
在“创建页面”模板中,当您单击预览按钮时,您通过 POST 发送数据,就好像它是一个表单一样。它将是
preview_viewURL 的操作,此视图将从 POST 获取参数。然后在视图中,您可以调用博客文章模板或任何具有适当数据的内容。 -
我理解你。但我不能在代码中做到这一点。有2个意见。如何从另一个视图获取视图的表单数据?像 request.Post.title 和 request.POST.body ?如果是 ;然后?抱歉,如果你用代码解释它会很棒:)
标签: django django-views