在cli上从Django的模板调用对象的方法

2024-10-01 02:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前的情况是:

<ul>
    {% for object in object_list %}
        <li>
            <ul>
                <li>{{ object.property1}}</li>
                <li>{{ object.property2}}</li>
            </ul>
        </li>
    {% endfor %}
</ul>

我想做的是调用一个方法(它将是{对象.删除}})如果且仅当用户按下“删除”按钮。我需要在remove方法中使用对象的一个属性,因此它必须是特定对象的remove()调用。在

我知道如何在视图中调用函数,因为有很多问题要问,但我不确定这会有什么帮助?与AJAX调用相同。在


Tags: 对象方法用户inforobject情况li
2条回答

您需要从数据库中获取对象,通常是通过从URL获取的id来执行调用。在

例如,Post中有一行url.py

urlpatterns = patterns('',
    url(r'^(?P<post_id>\d+)/$', views.detail, name='detail'),
    url(r'^(?P<post_id>\d+)/remove/$', views.remove, name='remove'),
    # ...
)

然后你得到views.py

^{pr2}$

在模板中添加指向remove视图的链接:

<ul>
{% for post in post_list %}
    <li>
        <ul>
            <li><a href="/{{ post.id }}/remove/">{{ post.id}}</a></li>
            <!  or add AJAX call to this URL  >
        </ul>
    </li>
{% endfor %}
</ul> 

在Django通常就是这样处理的。在

只要post_id只是一个函数参数,就可以将它用作自己存储的列表或字典的索引id。但是请确保您的regexp in urls.py规则适用于您的需要。在我的例子中,r'^(?P<post_id>\d+)/remove/$'查找整数(因为\d+规则)。更多信息请参见Django Documentation

你需要考虑一个网站是如何工作的。。。在

  1. 浏览器向您的web服务器发送一个请求以获取特定的url
  2. web服务器将请求详细信息传递给Django应用程序
  3. Django在urlconf中查找与该url匹配的视图
  4. Django使用request对象调用url函数(或视图类的方法)
  5. 视图代码呈现一个模板,生成一个HTML字符串
  6. web服务器将HTML发送回用户的浏览器

因此,考虑到这一点,很明显,当用户单击web页面上的按钮时,与Django交互的唯一方法是让浏览器发送一个新的请求。在

简而言之,您需要使用AJAX。在

相关问题 更多 >