Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django-如何创建预览视图_Django_Django Forms_Django Views - Fatal编程技术网

django-如何创建预览视图

django-如何创建预览视图,django,django-forms,django-views,Django,Django Forms,Django Views,我有一个添加页面来创建一篇新文章。我现在想添加一个链接(ahref)来预览这篇文章。我有一个表单和一个提交按钮将帖子保存到db中。我应该使用相同的表单进行预览。当我点击“预览”链接时,页面必须重定向到“preview.html”,我可以在其中显示表单的值 我被卡住了。在我的脑海中,我无法为这个问题创建算法。有一页,一张表格。一个视图(addPost)。我需要通过另一个视图获得这个表单的值,这个视图有另一个模板文件 我在模型py中有两个字段,叫做“标题预览”和“正文预览”。在预览页面中查看表单的值

我有一个添加页面来创建一篇新文章。我现在想添加一个链接(ahref)来预览这篇文章。我有一个表单和一个提交按钮将帖子保存到db中。我应该使用相同的表单进行预览。当我点击“预览”链接时,页面必须重定向到“preview.html”,我可以在其中显示表单的值

我被卡住了。在我的脑海中,我无法为这个问题创建算法。有一页,一张表格。一个视图(addPost)。我需要通过另一个视图获得这个表单的值,这个视图有另一个模板文件

我在模型py中有两个字段,叫做“标题预览”和“正文预览”。在预览页面中查看表单的值;表单数据应该写入这两个字段

这里是models.py:

class Post(models.Model):
    owner = models.ForeignKey(User)
    title = models.CharField(max_length = 100)
    body = models.TextField()
    bodyPreview = models.TextField() #preview 
    titlePreview = models.CharField(max_length=100) # preview 
    slug = AutoSlugField(populate_from='title',unique=True)
    posted = models.DateField(auto_now_add=True)
    isdraft = models.BooleanField(default=False)
以下是我的添加帖子视图:

@login_required(login_url='/login/')
def add_post(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_to_response('add.html',{'form':form,},context_instance=RequestContext(request))
我的地址表:

class addForm(forms.Form):
    title = forms.CharField(max_length=100,widget=forms.TextInput(attrs={'placeholder':'Buraya Başlık Gelecek',}))
    body = forms.CharField(widget=forms.Textarea(attrs={'placeholder':'Buraya Metin Gelecek','rows':'25','cols':'90',}))
    isdraft = forms.BooleanField(required=False)
    #ispreview = forms.BooleanField(required=False) i just added this line as first step. :)
如果需要另一个代码;你可以在下面发表评论


谢谢

将您的
addForm
转换为
modelForm
,然后向您的
add.html
模板添加一个名为“\u preview”的提交按钮(确保另一个提交按钮名为“\u save”)。代码如下所示:

class addForm(forms.ModelForm):
    class Meta:
        model = Post

@login_required(login_url='/login/')
def add_post(request):
    post = None
    template_name = 'add.html'
    if request.method == 'POST':
        form = addForm(request.POST)
        if form.is_valid():
          if '_preview' in request.POST:
              # don't save the post
              post = form.save(commit=False)
              template_name = 'preview.html'
          elif '_save' in request.POST:
              # save the post
              post = form.save()
              return HttpResponseRedirect('/admin/')
    else:
        form = addForm()
    return render_to_response(template_name, {'form': form, 'post': post}, context_instance=RequestContext(request))
您的模板底部会有如下内容:

<input type='submit' name='_save' value='Save Post' />
<input type='submit' name='_preview' value='Preview Post' />


通过这种方式,您可以让用户预览他们的帖子,而无需将其保存到数据库中-只需确保在
preview.html
上嵌入表单并包含一个保存按钮,这样,如果他们喜欢看到的内容,就可以保存帖子。

我更新了帖子。添加的models.pypost是否正确保存?如果是,只需将用户重定向到preview.html,并在单击preview链接时显示db?中的数据;它必须使用jquery(无页面刷新)将数据保存到这两个预览字段(titlepreview和bodypreview),然后重定向到preview.htmlit不执行任何操作。没有错误。我只是写了你说的代码。它不保存也不预览:/哎呀-我错过了
POST
块中的
form=
行。再试一次。哦,忘了问了。。URL呢?我忘了设置URL。我想这就是为什么它什么都不做。尽管如此,无论您发送到
add\u post
视图的是什么,都可以很好地实现这一点。确保您的表单正在过帐到“”。第二个过帐变量看起来是灰色的。遥不可及。post=form.save()