Приложение новостной рассылки для Django

Прием neato с groupby к кодированию по длинам серий в одной строке:

[(c,len(list(cgen))) for c,cgen in groupby(some_string)]

даст Вам список 2 кортежей, где первый элемент является символом, и 2-м является количество повторений.

Редактирование: Обратите внимание, что это - то, что отделяется itertools.groupby от семантики SQL GROUP BY: itertools не делает (и в целом не может) сортировать итератор заранее, таким образом, группы с тем же "ключом" не объединяются.

18
задан 12 August 2009 в 18:35
поделиться

4 ответа

Может быть, а может и нет. Было бы не так уж сложно иметь приложение, которое имеет связь «многие ко многим» между информационным бюллетенем (как бы это ни представлялось) и подписчиком (внешний ключ пользователя или 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}),
)

Этого достаточно, чтобы вы начали?

6
ответ дан 30 November 2019 в 07:50
поделиться

Попробуйте djangolist

DjangoList - это приложение django, которое позволяют делать массовые рассылки и управлять информационный бюллетень, из которого пользователи могут подписаться / отказаться от подписки. DjangoList - это в настоящее время в разработке и не готов к использованию.

0
ответ дан 30 November 2019 в 07:50
поделиться

вы должны взглянуть на этот проект https://github.com/emencia/emencia-django-newsletter

14
ответ дан 30 November 2019 в 07:50
поделиться

Я решил создать собственное решение для сборки текста и обработки подписок, но думаю, что буду использовать django -mailer , чтобы отслеживать, что было отправлено и как это закончилось.

1
ответ дан 30 November 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: