【发布时间】:2011-08-08 07:18:37
【问题描述】:
如果用户是访客,我需要为我网站的每个页面加载一个注册表单。我认为最简单的方法是创建一个“注册”应用程序/模块并在 init.py 中定义表单变量,因此假设我导入了模块。但是,我在查看表单变量时遇到了一些麻烦。 “未定义全局名称'form'”以下是我的设置:
我有一个 /signup/init.py 和 /signup/form.py 文件。
这是我的 init.py
from django import forms
from signup.form import SignUpForm
form = SignupForm()
这是我的 form.py
class SignupForm(forms.Form):
fullname = forms.CharField(min_length=3, max_length=25, initial='name', error_messages={'required': 'A unique username is required.', 'min_length': 'Your username must contain at least 3 characters.'})
username = forms.CharField(min_length=3, max_length=25, initial='choose a username', error_messages={'required': 'A unique username is required.', 'min_length': 'Your username must contain at least 3 characters.'})
password = forms.CharField(min_length=7, initial='choose a password', error_messages={'required': 'Please enter a password.','min_length': 'Your password must contain at least 7 characters.'})
email = forms.EmailField(initial='e-mail address', error_messages={'required': 'Please enter a valid email address.', 'invalid': 'Please enter a valid email address.'})
find_me = forms.BooleanField(initial=True, required=False)
tos = forms.BooleanField(error_messages={'required': 'You must accept our Terms of Service.'})
我正在尝试从我的 /views/index.py 文件中加载它们:
from django.http import HttpResponse
from pymongo import *
from user import *
import mongo
from django.shortcuts import render_to_response
from django.template import RequestContext, loader
import signup
#index view
def index(request):
return render_to_response('index.html',
{'form': signup.form},
context_instance=RequestContext(request),
)
我删除了 index.py 中不相关的代码......但基本上......(我可能会有一个 if else 让 return 语句只在用户未注册时返回 'form':form)
我的做法完全错误吗?有人介意告诉我我做错了什么吗?
::编辑::
另外,我注意到我在返回中没有 signup.form,但这仍然会引发
AttributeError at /
'module' object has no attribute 'form'
错误。我更改了上面的代码以适应它
【问题讨论】: