小编cri*_*eos的帖子

在django中发送HTML电子邮件

在我的项目中,我添加了一个简报源.但是在尝试使用此功能发送电子邮件时:

def send(request):
    template_html = 'static/newsletter.html'
    template_text = 'static/newsletter.txt'
    newsletters = Newsletter.objects.filter(sent=False)
    subject = _(u"Newsletter")
    adr = NewsletterEmails.objects.all()
    for a in adr:
        for n in newsletters:
            to = a.email
            from_email = settings.DEFAULT_FROM_EMAIL           
            subject = _(u"Newsletter Fandrive")
            text = get_template(template_text)
            html = get_template(template_html)
            d = { 'n': n,'email': to }
            text_content = text.render(d)
            html_content = html.render(d)

            msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
            msg.attach_alternative(html_content, "text/html")
            msg.send()
Run Code Online (Sandbox Code Playgroud)

使用这些模板:

//text

===================  Newsletter - {{ n.date }}  ============
==========================================================
                      {{ n.title }}
==========================================================          
{{ n.text …
Run Code Online (Sandbox Code Playgroud)

html django django-templates html-email

20
推荐指数
3
解决办法
2万
查看次数

使用crontab与django

我需要创建一个每天从crontab发送新闻通讯的功能.我在互联网上找到了两种方法:

第一个 - 放在django项目文件夹中的文件:

#! /usr/bin/env python
import sys
import os

from django.core.management import setup_environ
import settings
setup_environ(settings)

from django.core.mail import send_mail
from project.newsletter.models import Newsletter, Address

def main(argv=None):
    if argv is None:
        argv = sys.argv

    newsletters = Newsletter.objects.filter(sent=False)
    message = 'Your newsletter.'

    adr = Address.objects.all()
    for a in adr:
        for n in newsletters:
            send_mail('System report',message, a ,['user@example.com'])

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我不确定它是否会起作用,我不知道如何运行它.假设它叫做run.py,那么我应该在cron中调用它0 0 * * * python /path/to/project/run.py 吗?

第二个解决方案 - 在任何地方创建我的发送函数(就像普通的django函数一样),然后创建一个run.py脚本:

import sys
import os

os.environ['DJANGO_SETTINGS_MODULE'] …
Run Code Online (Sandbox Code Playgroud)

python django cron crontab

11
推荐指数
3
解决办法
3万
查看次数

使用信号扩展django-registration

我在stackoverflow上找到了一个使用信号扩展django-registration和新字段的解决方案.这是链接:http://dmitko.ru/?p = 546.
我创建了扩展配置文件模型,扩展形式,为设置添加了必需的选项,定义了URL并显示了正确的表单,但只创建了普通用户(来自auth模块).为什么会这样?

account.models:

from django.db import models
from django.contrib.auth.models import User
from registration.signals import user_registered
import hashlib

class InheritedProfile(models.Model):
    first_name = models.CharField("Name", max_length=50, blank=True, null=True)
    last_name = models.CharField("Last name", max_length=50, blank=True, null=True)
    pid = models.CharField("PESEL", max_length=11, blank=True, null=True)
    street = models.CharField("Street", max_length=50, blank=True, null=True)
    number = models.CharField("Flat/house number", max_length=10, blank=True, null=True)
    code = models.CharField("Zip ", max_length=6, blank=True, null=True)
    city = models.CharField("City", max_length=50, blank=True, null=True) 
    class Meta:
        abstract=True

class UserProfile(InheritedProfile, User):
    def upload_path(self, field_attname):
        filename …
Run Code Online (Sandbox Code Playgroud)

django django-signals django-registration

8
推荐指数
1
解决办法
5891
查看次数

Django form.save一步一步

假设我有一个用于添加/编辑产品的表单(字段'user'是我的用户的外键),它是从两个单独的视图函数触发的 - 添加/编辑:

def product_add(request):
    userprofile = UserProfile.objects.get(user=request.user)
    if request.method == 'POST':
        form = ProductAddForm(request.POST, request.FILES,)
        if form.is_valid():
            form.save(user=request.user)
    else:
        form = ProductAddForm()
    return render_to_response('products/product_add.html', {
            'form':form, 'user':request.user,
            }, context_instance=RequestContext(request))

def product_edit(request, id):
    product = get_object_or_404(Product, id=id, user=request.user)
    if product.user.id!=request.user.id:
        raise Http404
    if request.method == 'POST':
        form = ProductAddForm(request.POST, request.FILES, instance=product)
        if form.is_valid():
            form.save(user=request.user)            
    else:
        form = ProductAddForm(instance=product)
    return render_to_response('products/product_edit.html', {
            'form':form, 'user':request.user,
            }, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

表单的save方法如下所示:

def save(self, user, *args, **kwargs):
    self.instance.user = user                           
    post = super(ProductAddForm, self).save(*args, **kwargs)
    post.save() …
Run Code Online (Sandbox Code Playgroud)

python django super

7
推荐指数
1
解决办法
1万
查看次数

在Django中提交没有重定向的表单

在我的主页面中,我添加了一个模板,其中包含用于向电子报添加电子邮件的表单.我希望这个表单能够添加新的电子邮件,而无需在任何地方重定向.我怎么能做到这一点?这是我的代码,当我使用单独的页面时:

观点:

def newsletter_add(request):
    if request.POST:
        f = NewsletterForm(request.POST)
        if f.is_valid():
            try:
                e = NewsletterEmails.objects.get(email = request.POST['email'])
                msg = u'Mail already added'
                return render_to_response('newsletter/add.html',
                    {'form':f,'msg':msg,},RequestContext(request))
            except Address.DoesNotExist:
                e = NewsletterEmails(email = request.POST['email'])
                e.save()
                msg = u'Mail added'
                return HttpResponseRedirect('/')
    else:
        f = NewsletterForm()
    return render_to_response('newsletter/add.html',{'form':f,},RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

形式:

{% block content %}
    <div class="center-right">
        <div class="pane profile">
            <div class="div-content">
                {{ msg }}
                <form action="" method="post" enctype="multipart/form-data">
                    {{form.as_p}}
                    <input type="submit" class="submit" name="submit" value="Ok" />
                </form>
            </div>
        </div>
    </div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

形式 : …

django redirect django-templates django-forms

4
推荐指数
1
解决办法
5367
查看次数