2017-01-26 48 views
2

我正在学习基本的Django开发,并且正在创建一个简单的博客应用程序,并创建了一些我创建的帖子。我的主页包含这个遍历所有帖子并显示它们的代码。在Django中打开引导模式视图以编辑帖子

{% for post in all_posts %} 
    <div class="post-card"> 
     {{post.title}} 
     {{post.description}} 
     <a data-toggle="modal" data-target="#postEditModal"> 
     Edit Post 
     </a> 
    </div> 
{% endfor %} 

我有一个#postEditModal其链接到引导数据,目标方法,并显示以下

<div id=#postEditModal class="modal fade" style="overflow: scroll;" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
    {{editpostform}} 
</div> 

我的目标是要能够点击“编辑帖子”链接每个单独的帖子应该重定向到帖子的子弹,并在同一页面的顶部打开模式,然后从那里我应该可以使用我的{{editpostform}}编辑帖子。点击模式区域外应该返回到同一页面。

我已经尝试了很多东西,如post.get_absolute_url{% url 'single_post' post.id %},但迄今没有任何工作正常。我假设有一定程度的Javascript/AJAX参与,但我不确定从哪里开始。

+0

你为什么要重定向到一个不同的URL?您可以在用户单击编辑帖子时以模态形式捕获帖子详细信息,并将该表单发布到可以进行更新的视图。 –

+0

我想重定向到特定的帖子网址的原因是因为最终我想添加一个“详细模式”视图,在该视图中我可以在模式中查看我的完整博客帖子,然后退出。 Pinterest模式视图模拟我正在寻找的功能。 – Viji123

回答

1

您正在使用相同的id创建多个modals,并且所有链接指向(data-target)到相同的模式,这不是唯一的。

一个简单的解决方案是将帖子ID添加到模式和链接。试试这个:

<div id="#postEditModal{{ post.id }}" class="modal fade" style="overflow: scroll;" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
    {{editpostform}} 
</div> 

并修改这样的链接:

<a data-toggle="modal" data-target="#postEditModal{{ post.id }}">Edit Post</a> 
+0

添加#postEditModal {{post.id}}为我打破了链接。没有{{post.id}}模式打开就好。 – Viji123

+1

但是在这种情况下,你打开一个空的表格,对吗?如果您想要编辑每篇文章,您需要使用ajax加载模式,并使用选择的帖子数据填充表单。 – afilardo

+0

有没有教程,或者你知道我将如何开始使用Ajax加载模态并使用单独的发布信息填充表单?我也想要一个“详细视图”,并且想显示post.title和post.description。这就是为什么我认为重定向到单独的柱塞塞更容易。 – Viji123