当前位置:  开发笔记 > 编程语言 > 正文

Django - [Errno 111]连接被拒绝

如何解决《Django-[Errno111]连接被拒绝》经验,为你挑选了5个好方法。

当我发表评论时,不要保存,崩溃(错误:[Errno 111]连接拒绝),为什么?

views.py

import time
from calendar import month_name

from django.http import HttpResponseRedirect, HttpResponse  
from django.shortcuts import get_object_or_404, render_to_response  
from django.contrib.auth.decorators import login_required  
from django.core.context_processors import csrf  
from django.core.paginator import Paginator, InvalidPage, EmptyPage  
from django.core.urlresolvers import reverse  

from dbe.blog.models import *  
from django.forms import ModelForm  


class CommentForm(ModelForm):  
    class Meta:  
        model = Comment  
        exclude = ["post"]  


def post(request, pk):  
    post = Post.objects.get(pk=pk)  
    comments = Comment.objects.filter(post=post)  
    d = dict(post=post, comments=comments, form=CommentForm(), user=request.user)  
    d.update(csrf(request))  
    return render_to_response("post.html", d)  

def delete_comment(request, post_pk, pk=None):  
    if request.user.is_staff:  
        if not pk: pklst = request.POST.getlist("delete")  
        else: pklst = [pk]  

        for pk in pklst:  
            Comment.objects.get(pk=pk).delete()  
        return HttpResponseRedirect(reverse("dbe.blog.views.post", args=[post_pk]))  

def add_comment(request, pk):  
    p = request.POST  

    if p.has_key("body") and p["body"]:  
        author = "Anonymous"  
        if p["author"]: author = p["author"]  
        comment = Comment(post=Post.objects.get(pk=pk))  

        cf = CommentForm(p, instance=comment)  
        cf.fields["author"].required = False  
        comment = cf.save(commit=False)  

        comment.author = author  
        notify = True  
        if request.user.username == "ak": notify = False  
        comment.save(notify=notify)  
    return HttpResponseRedirect(reverse("dbe.blog.views.post", args=[pk]))  

def mkmonth_lst():  
    if not Post.objects.count(): return []  

    # set up vars  
    year, month = time.localtime()[:2]  
    first = Post.objects.order_by("created")[0]  
    fyear = first.created.year  
    fmonth = first.created.month  
    months = []  

    for y in range(year, fyear-1, -1):  
        start, end = 12, 0  
        if y == year: start = month  
        if y == fyear: end = fmonth-1  

        for m in range(start, end, -1):  
            months.append((y, m, month_name[m]))  
    return months  

def month(request, year, month):  
    posts = Post.objects.filter(created__year=year, created__month=month)  
    return render_to_response("list.html", dict(post_list=posts, user=request.user,  
                                                months=mkmonth_lst(), archive=True))  

def main(request):  
    posts = Post.objects.all().order_by("-created")  
    paginator = Paginator(posts, 10)  
    try: page = int(request.GET.get("page", '1'))  
    except ValueError: page = 1  

    try:  
        posts = paginator.page(page)  
    except (InvalidPage, EmptyPage):  
        posts = paginator.page(paginator.num_pages)  

    return render_to_response("list.html", dict(posts=posts, user=request.user,  
                                                post_list=posts.object_list,   months=mkmonth_lst()))

models.py

from django.db import models  
from django.contrib.auth.models import User  
from django.contrib import admin  
from django.core.mail import send_mail  


class Post(models.Model):  
    title = models.CharField(max_length=60)  
    body = models.TextField()  
    created = models.DateTimeField(auto_now_add=True)  

    def __unicode__(self):  
        return self.title  


class Comment(models.Model):  
    created = models.DateTimeField(auto_now_add=True)  
    author = models.CharField(max_length=60)  
    body = models.TextField()  
    post = models.ForeignKey(Post)  

    def __unicode__(self):  
        return unicode("%s: %s" % (self.post, self.body[:60]))  

    def save(self, *args, **kwargs):  
       if "notify" in kwargs and kwargs["notify"] == True:  
       message = "Comment was was added to '%s' by '%s': \n\n%s" % (self.post,   self.author,  
                                                                         self.body)  
            from_addr = "no-reply@mydomain.com"  
            recipient_list = ["myemail@mydomain.com"]  
            send_mail("New comment added", message, from_addr, recipient_list)  

        if "notify" in kwargs: del kwargs["notify"]  
        super(Comment, self).save(*args, **kwargs)

管理员

class PostAdmin(admin.ModelAdmin):  
    search_fields = ["title"]  
    display_fields = ["title", "created"]  

class CommentAdmin(admin.ModelAdmin):  
    display_fields = ["post", "author", "created"] 

谢谢!



1> arie..:

看起来你正在尝试发送邮件(send_mail())和您的邮件设置你settings.py是不正确的.

您应该查看发送电子邮件的文档.


出于调试目的,您可以使用以下命令设置本地smtpserver:

python -m smtpd -n -c DebuggingServer localhost:1025

并相应地调整您的邮件设置:

EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025

这在此处记录:测试电子邮件发送

作为启动专用调试服务器的替代方法,您可以使用console.EmailBackend最近添加到Django的服务器.



2> Ajay Gupta..:

用于开发和测试:

在Django 1.6+中,我们可以在settings.py中添加此行

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

这将在控制台上显示邮件以进行简易验证.

注意: 邮件不会发送到Msg.Its中的指定收件人,仅用于开发和测试.

为此,您需要配置Doc中给出的SMTP服务器.

供参考:用于发送电子邮件的Django文档



3> 小智..:

在您的服务器上安装postfix包,它的工作原理.如果是ubuntu,请尝试:

sudo apt-get install postfix

在您的设置中,放置:

EMAIL_HOST = 'localhost'



4> Mark Chacker..:

我们最近离开了Python调试电子邮件服务器,使用了一个名为Mailcatcher的程序.Mailcatcher作为守护进程运行,拦截所有测试电子邮件到端口1025,并与Web服务器集成,以便您可以从浏览器查看截获的电子邮件.好处

如果需要,您可以将测试电子邮件视为HTML

所有测试电子邮件的集中管理 - 它们会一直存在,直到您清除它们为止

查看来自任何浏览器的测试电子邮件,而不是滚动终端窗口

您可以在此处阅读更多内容并下载:http: //rubygems.org/gems/mailcatcher

如果您不喜欢Ruby,我的同事已经将Mailcatcher的功能移植到node.js - 请查看MailDev:http://djfarrelly.github.io/MailDev/



5> user993563..:

另外以下内容将有所帮助:

将以下最小设置放在服务器上的settings.py或local_settings.py文件中.

EMAIL_HOST = 'localhost'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

而不是使用smtp.gmail.com,它有很多限制,你可以拥有自己的邮件服务器.

你可以通过安装自己的邮件服务器来实现:

sudo apt-get install sendmail

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有