【问题标题】:Django view works in "shell", but not when imported into existing viewDjango 视图在“shell”中工作,但在导入现有视图时不起作用
【发布时间】:2011-11-28 23:50:29
【问题描述】:

目标:加载页面后立即显示倒计时“时钟”。 (FWIW,它的目的是在视觉上响亮而清晰地提醒即将到来的截止日期)

平台:Windows

countdown.py

import datetime, os, time
from Tkinter import *
from sys import exit


root = Tk()
time = ""
clock = Label(root, font=('times', 48, 'bold'), bg="cyan")
clock.pack(fill=BOTH, expand=1)


def getTime():
  -  finish = datetime.datetime(2011, 12, 4, 14, 45, 14, 281000)
  -  now = datetime.datetime.now()
  -  diff = finish - now
  -  minutes, seconds = divmod(diff.seconds, 60)
  -  hours, minutes = divmod(minutes, 60)
  -  string = "%d days %d hours %d minutes %d seconds" %    (diff.days,hours,minutes,seconds)
  - clock.config(text=string)
  - clock.after(200, getTime)

getTime()
root.mainloop()

urls.py:

from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
-    url(r'^$', 'views.upn', name='site-homepage'),
-    (r'^ASSETS/(?P<path>.*)$', 'django.views.static.serve',
-       {'document_root': settings.MEDIA_ROOT}),
-    (r'^admin/', include(admin.site.urls)),
-    (r'^upn/$', 'views.upn'),
)

views.py:

from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
from django.shortcuts import render_to_response
import urllib2
import countdown

def upn(request):
-return render_to_response("main.html")

ma​​in.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Main Page</title>

<link rel="stylesheet" type="text/css" href="/ASSETS/CSS/UPN.css"/>

</head>

<body>

<div class="maintext">
<div>


        <img class="MAINimg1" height="400" width="323" src="http://12345.jpg" border="0">

        <img class="MAINimg2" height="350" width="550" src="http://6789.jpg" border="0" border="0" >

    </div>



</body>

</html>

如果我在 Windows 命令提示符下运行 "python manage.py shell",然后运行 ​​"import countdown.py",我会得到想要的结果。

但是,如果我将其合并到 views.py“导入倒计时” 中,我会得到以下(回溯):

追溯:

File "D:\Python26\lib\site-packages\django\core\handlers\base.py" in get_response
  83.                     request.path_info)

    File "D:\Python26\lib\site-packages\django\core\urlresolvers.py" in resolve

  218.                     sub_match = pattern.resolve(new_path)

File "D:\Python26\lib\site-packages\django\core\urlresolvers.py" in resolve

  125.             return self.callback, args, kwargs

File "D:\Python26\lib\site-packages\django\core\urlresolvers.py" in _get_callback

  137.             raise ViewDoesNotExist, "Tried %s in module %s. Error was: %s" % 
(func_name, mod_name, str(e))


Exception Type: ViewDoesNotExist at /

Exception Value: Tried upn in module views. Error was: 'module' object has no attribute 'argv'

错误:

*_get_callback 中的文件“D:\Python26\lib\site-packages\django\core\urlresolvers.py” 137. raise ViewDoesNotExist, "Tried %s in module %s. Error was: %s" % (func_name, mod_name, str(e)) *

似乎是关键,但我无法准确地解释此错误以进行必要的更正。

提前感谢您提供的任何情报。

【问题讨论】:

    标签: python django


    【解决方案1】:

    问题似乎出在您的 urlconf 上,它找不到整个视图。

    【讨论】:

      【解决方案2】:

      如果您从代码中注释掉root.mainloop(),错误将会消失,但这并不能解决您在桌面上显示窗口的问题。

      为此,您需要在桌面上有一个程序(可能是同一个程序countdown.py)侦听来自您的网络服务的信号,然后启动计时器。

      如果您必须在请求中启动此代码,则需要在应用程序的 wsgi 处理程序中的某个地方执行此操作,其中存在传统的 argc/argv ;但是我强烈建议不要这样做,并推荐侦听器/查询方法。

      【讨论】:

        猜你喜欢
        • 2012-04-14
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 2012-10-12
        • 2022-12-12
        • 1970-01-01
        • 2017-06-02
        • 1970-01-01
        相关资源
        最近更新 更多