我正在运行Django 1.5.1,Python 2.7.2和IPython 0.13.2.如果我从我的Django项目目录中执行"python ./manage.py shell",我会收到以下错误:
from django import forms
class CommentForm(forms.Form):
name = forms.CharField()
NameError: name 'forms' is not defined.
Run Code Online (Sandbox Code Playgroud)
我知道表格被定义为我在"dir(表格)"时可以看到它.我注意到这个错误只发生在我在REPL中运行iPython时.如果我启动REPL并且只使用普通的旧Python解释器,则不会发生错误.
还有其他人遇到过这个问题吗?如果是这样,你知道它为什么会发生以及是否有解决方法吗?
我应该补充一点,我在过去在REPL中创建类时遇到了问题,直到我在类中创建了一个元类并定义了一个"app_label"变量.这在这种情况下并没有什么不同.
谢谢.
我正在尝试根据不同的参数创建一个timedelta字典.例如.
from django.utils import timezone
a = {'Minutes':(lambda dt,delta: dt + timezone.timedelta(minutes=delta)),
'Hours': (lambda dt,delta: dt + timezone.timedelta(hours=delta)}
Run Code Online (Sandbox Code Playgroud)
现在使用上面的字典时:
new_time = a['Minutes'](timezone.now(),10)
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
/usr/local/lib/python2.7/dist-packages/django/core/management/commands/shell.pyc in <lambda>(dt, delta)
----> 1 a = {'Minutes':(lambda dt,delta: dt + timezone.timedelta(minutes=delta))}
NameError: global name 'timezone' is not defined
Run Code Online (Sandbox Code Playgroud)
请解释为什么我不能在lambda中使用导入的函数.
这是一个python脚本tshi3.py:
import csv
def li2ho2():
print(csv)
li2ho2()
Run Code Online (Sandbox Code Playgroud)
我复制了这段代码并将其粘贴到python manage.py shell. 有用。
但我跑了python manage.py shell < tshi3.py。得到了NameError: name 'csv' is not defined。
为什么?
环境:
Linux Mint 18.1
Python 3.4.1 (default, Sep 3 2014, 08:45:22)
Django==1.11.4
Run Code Online (Sandbox Code Playgroud)
有一个类似的问题。