【问题标题】:Django Newsletter AppDjango 时事通讯应用程序
【发布时间】:2026-01-27 00:40:01
【问题描述】:

是否有任何适用于 django 的时事通讯应用程序,允许用户订阅-取消订阅时事通讯?我想要一个易于使用和通过 Django 管理员管理的应用程序。

【问题讨论】:

    标签: django newsletter


    【解决方案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】:

      【讨论】:

      【解决方案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 的翻译做出贡献

        【讨论】: