Django 时事通讯应用程序
Posted
技术标签:
【中文标题】Django 时事通讯应用程序【英文标题】:Django Newsletter App 【发布时间】:2010-11-19 01:40:51 【问题描述】:是否有任何适用于 django 的时事通讯应用程序,允许用户订阅-取消订阅时事通讯?我想要一个易于使用和通过 Django 管理员管理的应用程序。
【问题讨论】:
【参考方案1】:也许,也许不是。拥有一个在 Newsletter(无论如何想象的)和订阅者(User 或 firstName/lastName/emailAddress/password 上的外键)之间具有多对多关联的应用程序并不难。
你的模型应该是这样的:
from django.db import models
from django.contrib.auth.models import User
class Subscriber(models.Model):
user = models.ForeignKey(User)
email = models.EmailField()
def __unicode__(self):
return "User %s" % (self.user.username, )
@models.permalink
def get_absolute_url(self):
return ('subscriber', None, 'object_id' : self.id)
class Meta:
ordering = [ "id" ]
class Newsletter(models.Model):
name = models.CharField(max_length=80)
subscribers = models.ManyToManyField('Subscriber')
# .... Other stuff
def __unicode__(self):
return "Newsletter %s" % (self.name, )
@models.permalink
def get_absolute_url(self):
return ('newsletter', None, 'object_id' : self.id)
class Meta:
ordering = [ "id" ]
你的 urls.py 应该是这样的:
from django.conf.urls.defaults import *
from django.views.generic.simple import direct_to_template
urlpatterns = patterns('',
url(r'^subscriber/(?P<object_id>\d+)/$', views.subscriberview, name='subscriber_view'),
url(r'^newsletter/(?P<object_id>\d+)/$'', views.newsletterview,name='newsletter_view'),
url(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 'document_root': MEDIA_ROOT),
)
这足以让你继续前进吗?
【讨论】:
【参考方案2】:试试djangolist
DjangoList 是一个 django 应用程序,它将 允许进行群发邮件和管理 用户可以从中获取的时事通讯 订阅/取消订阅。 DjangoList 是 目前正在开发中,不是 可以使用了。
【讨论】:
不幸的是,djangolist 链接现在已损坏。 正如ohloh.net/p/djangolist 所指出的,这似乎是一个死/失踪的项目。【参考方案3】:你应该看看这个项目https://github.com/emencia/emencia-django-newsletter
【讨论】:
链接已损坏。现在似乎在github.com/emencia/emencia-django-newsletter【参考方案4】:我决定创建自己的解决方案来组合文本和处理订阅,但我想我将使用django-mailer 来跟踪发送的内容以及它是如何结束的。
【讨论】:
【参考方案5】:您可能想看看我的应用程序,简称为django-newsletter。它允许管理多个时事通讯、用户订阅(他们不必提供他们的电子邮件地址或确认任何内容,并使用数据库中的模板来获取消息(支持文本和 html)。该应用程序目前正在生产中使用并且计划在大约一周内发布 0.1 版本。
对于大量提交,我建议使用 Postmark 之类的东西,它也可以与 Django 一起使用。 (这可以很容易地与时事通讯应用程序一起使用,只要我从使用 Django 的旧 (SMTP) 邮件 API 转移到新的后端不可知的 API。
但可以肯定的是,如果您只需要简单的订阅管理,您可以使用 'github.com slash howiworkdaily slash' django-newsletter 就可以了。 (是的,我们是第一个使用该名称的人。:P 对 URL 感到抱歉 - 但显然 *** 使用了某种荒谬的垃圾邮件预防机制。)
【讨论】:
当我有大量订阅时,我无法在管理员中打开添加提交屏幕。 如果您合并此项目,AGPL 许可证是否要求您发布整个 Django 站点的源代码?【参考方案6】:如果你想看看http://www.emencia.fr/fr/solutions/newsletter/emencia-django-newsletter
,我已经发布了 Emencia Django Newsletter 的截屏演示它当然是在 github 上开源的
我们也需要对 transifex 的翻译做出贡献
【讨论】:
以上是关于Django 时事通讯应用程序的主要内容,如果未能解决你的问题,请参考以下文章
迭代 Django 中的相关对象:循环查询集或使用单行 select_related(或 prefetch_related)