Wagtail CMS的投票插件
项目描述
提供投票功能的Wagtail插件。
安装
使用pip安装
pip install wagtailpolls
它与Wagtail 1.3及以上版本兼容。
使用
将 wagtailpolls 添加到您的 INSTALLED_APPS 。
确保您将 from wagtailpolls.views.vote import vote 这行代码添加到您的 urls.py 中,并包含URL url(r'^vote/(?P<poll_pk>.*)/$', vote, name='wagtailpolls_vote') 。
定义一个指向 wagtailpolls.Poll 的外键,并使用 PollChooserPanel
from django.db import models
from wagtailpolls.edit_handlers import PollChooserPanel
from wagtail.wagtailadmin.edit_handlers import FieldPanel
class Content(Page):
body = models.TextField()
poll = models.ForeignKey(
'wagtailpolls.Poll',
null=True,
blank=True,
on_delete=models.SET_NULL
)
content_panels = [
FieldPanel('body', classname="full"),
PollChooserPanel('poll'),
]
然后,在您的编辑器中,确保您已在Wagtail管理中的投票部分添加了一些投票。您将能够从中选择一个投票,就像您预期的那样在模板中访问它。
模板 & 显示
您可以通过多种方式显示您的投票。 wagtailpolls 提供了一个模板标签来帮助您完成此操作,以及一些可以通过模板访问的属性,用于将每个问题作为表单呈现。以下是一个使用所有提供的工具的示例
{% extends "layouts/page.html" %}
{% load wagtailpolls_tags %}
{% block content %}
<h1>{{ self.title }}</h1>
<br>
{% if self.poll %}
<form class='poll' method='POST' action='{% vote self.poll %}'>
{% csrf_token %}
{{self.poll.form}}
<br><br>
<input type="submit" value="Vote">
</form>
{% else %}
No polls added to this page yet!
{% endif %}
{% endblock %}
如图所示,{% vote %} 模板标签需要传递一个投票实例才能正确工作。您还需要在包含此模板标签的文件顶部执行 {% load wagtailpolls_tags %}。可以使用 .form 结尾来渲染所有问题。另外,.form_as_ul 和所有其他表单类型也都可以使用。
如果您为页面选择了一个投票,则表单上不会显示任何字段,并且在投票时将显示一条消息,表明没有可供投票的投票。
投票
提交投票后,服务器将返回类似于 JsonResponse 的响应。
{"total_votes": 11, "total_questions": 3, "poll": "Test Poll", "votes": {"Nah": 10, "Yeah": 1, "Maybe": 0}}
使用 JavaScript,可以据此数据创建您喜欢的投票前端。
投票表单也执行一些验证。如果投票表单无法获取您的 IP,则将返回类似的内容。
{"poll": "Test Poll", "total_questions": 3, "total_votes": 11, "votes": {"Yeah": 1, "Maybe": 0, "Nah": 10}, "form_error": {"__all__": ["Sorry, we were not able to obtain your ip address"]}}
此外,还有一个名为 WAGTAILPOLLS_VOTE_COOLDOWN 的设置,在您的设置中设置。这将只允许同一 IP 的用户以您选择的间隔进行投票。如果被捕获,错误将类似于上面的错误出现在 JsonResponse 中。
此外,信息还将被添加到 django 会话中(基本上是设置了cookie),以确保设备无法进行重复投票。如果由于这个原因拒绝投票,则投票将简单地不会注册,且在 JsonResponse 中不会返回错误。
设置
以下设置可以在您的 settings.py 文件中设置。
WAGTAILPOLLS_VOTE_COOLDOWN 这是一个表示分钟的整数,默认为 10 分钟。
WAGTAILPOLLS_VOTE_REQUIRE_PERMS 表示投票权限的字符串或字符串列表,即 'wagtailadmin.access_admin'。
项目详情
wagtailpolls-0.3.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 20695a9fe464d4f16b263e0195e8f55bb1e4b9eba38953b063da421a82b32706 |
|
MD5 | 4470141847c0604e1b76185fe27023c0 |
|
BLAKE2b-256 | c192d40b00dd8d62c43402d26b6074455adf13a02008ac0352995e2f6a33d7d4 |