Python Django 1.7在服务器启动时转储所有打印语句,但在应用程序运行时什么也不转储

Python Django 1.7在服务器启动时转储所有打印语句,但在应用程序运行时什么也不转储,python,django,Python,Django,我很难弄清楚这里出了什么问题。。我正在尝试为我的django项目设置日志记录,但在启动/manage.py runserver后,所有调试消息都会立即发送出去。当我浏览网站时,什么也没发生 我试图通过在一个非常简单的应用程序中设置来隔离日志记录问题。同样的问题 所以我也尝试了非常基本的print语句,我看到了同样的行为 这是我的视图。py: from django.shortcuts import render from django.views.generic import ListView

我很难弄清楚这里出了什么问题。。我正在尝试为我的django项目设置日志记录,但在启动
/manage.py runserver
后,所有调试消息都会立即发送出去。当我浏览网站时,什么也没发生

我试图通过在一个非常简单的应用程序中设置来隔离日志记录问题。同样的问题

所以我也尝试了非常基本的
print
语句,我看到了同样的行为

这是我的
视图。py

from django.shortcuts import render
from django.views.generic import ListView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy

from architects.models import Architect

# Create your views here.
class ArchitectList(ListView):
    print('architect list')
    model = Architect
    template_name = 'backend/architects.html'

class ArchitectCreate(CreateView):
    print('create architect view')
    model = Architect
    template_name = 'backend/architect_form.html'
    success_url = reverse_lazy('backend:architects')
    fields = ['name']

class ArchitectUpdate(UpdateView):
    print('update architect view')
    model = Architect
    template_name = 'backend/architect_form.html'
    success_url = reverse_lazy('backend:architects')
    fields = ['name']

class ArchitectDelete(DeleteView):
    print('delete architect view')
    model = Architect
    template_name = 'backend/architect_confirm_delete.html'
    success_url = reverse_lazy('backend:architects')
这就是我在启动django dev服务器时看到的:

$ ./manage.py runserver
architect list
create architect view
update architect view
delete architect view
architect list
create architect view
update architect view
delete architect view
Performing system checks...

System check identified no issues (0 silenced).
October 08, 2014 - 13:49:03
Django version 1.7, using settings 'turigo.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
所有的
print
语句都转储到这里。。。好啊但是现在,当我浏览网站到不同的视图时,什么都没有发生

[08/Oct/2014 13:51:40] "GET /admin/architects/add/ HTTP/1.1" 200 10643
[08/Oct/2014 13:51:43] "GET /admin/architects/ HTTP/1.1" 200 10956

有什么想法吗?多亏了Python,在类级别定义的任何内容都会在首次导入文件时执行。(这同样适用于像
model=Architect
这样的赋值,就像它适用于打印语句一样:赋值本身就是可执行语句)

正如羊皮纸所建议的,您需要将这些语句移动到Django调用视图时运行的方法中:因为您没有任何语句,所以只需对base
dispatch
方法进行基本重写即可:

class ArchitectList(ListView)
    def dispatch(self, *args, **kwargs):
        print('in architect list')
        return super(ArchitectList, self).dispatch(*args, **kwargs)

这是因为
打印
是在创建类时执行的。您需要将它们放在视图方法中。