2011-10-05 34 views
1

我与Python打的时​​候,我在Python语言很新,所以我想重置丢失的密码,但我遇到ValueError异常,这里是我的代码:ValueError异常,当我试图实现丢失密码

models.py:

def forgot(request): 
    if request.method == 'POST': 
     try: 
      user = User.objects.get(username=request.POST['username']) 
      lostpassword = LostPassword.objects.create(user=user, key=new_key()) 
      message = 'http://%s:%s/lostpassword/change/%s/' % (
       request.META['SEVER_NAME'], 
       request.META['SEVER_PORT'], 
       lostpassword.key) 
     except User.DoesNotExist: 
      message = 'Unknown user' 
    else: 
     message = '' 
    return render_to_response('homepage/forgot.html', {'message': message}) 

forms.py:

class ForgotForm(forms.Form): 
     help_string="Your password will be emailed to you" 
     user = forms.CharField() 

views.py:

def forgot(request): 
     if request.method == 'POST': 
      try: 
       user = User.objects.get(username=request.POST['username']) 
       lostpassword = LostPassword.objects.create(user=user, key=new_key()) 
       message = 'http://%s:%s/lostpassword/change/%s/' % (
        request.META['SEVER_NAME'], 
        request.META['SEVER_PORT'], 
        lostpassword.key) 
      except User.DoesNotExist: 
       message = 'Unknown user' 
     else: 
      message = '' 
     return render_to_response('homepage/forgot.html', {'message': message}) 

url.py: 

    urlpatterns = patterns('blog.apps.homepage.views', 
url(r'^$', 'index', name='homepage_index'), 
url(r'^about/$', 'about', name='homepage_about'), 
url(r'^contact/$', 'contact', name='homepage_contact'), 
url(r'^archive/$', 'archive', name='homepage_archive'), 
url(r'^login/$', 'login', name='homepage_login'), 
url(r'^register/$', 'register', name='homepage_register'), 
url(r'^gallery/$', 'gallery', name='homepage_gallery'), 
url(r'^profile/$', 'profile', name='homepage_profile'), 
url(r'^welcome/$', 'welcome', name='homepage_welcome'), 
url(r'^validation/$', 'validation', name='homepage_welcome'), 
url(r'^success/$', 'success', name='homepage_success'), 
url(r'^add_organisation/$', 'add_organisation', name='homepage_add_organisation'), 
url(r'^hallo/$', 'hallo', name='homepage_hallo'), 
url(r'^editMe/$', 'editMe', name='homepage_editMe'), 
    url(r'^forgot/$', 'forgot', 'blog.apps.homepage.views.forgot'), 

) 

forgot.html(模板):

<form method="post" action="."> 
    Username: <input type"text" name="username" /> <br /> 
    <input type="Submit"> 
</form> 
<p> 
    {{ message }} 
</p> 

回溯:

Traceback: 
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response 
101. request.path_info) 
File "/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.py" in resolve 
252. sub_match = pattern.resolve(new_path) 
File "/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.py" in resolve 
252. sub_match = pattern.resolve(new_path) 
File "/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.py" in resolve 
156. kwargs.update(self.default_args) 

Exception Type: ValueError at /forgot/ 
Exception Value: dictionary update sequence element #0 has length 1; 2 is required 

它是什么,我不这样做行吗?

+0

你发布了你的观点两次而不是你的模型 - 但更重要的是,你没有发布你的网址,这是我认为错误的地方。 –

+0

我添加了url.py代码。 – Eric

+0

不,请发布* whole * urls.py。 –

回答

0

url函数的第三个参数应该是一个由传递给视图函数的额外参数组成的字典。出于某种原因,您在那里有'blog.apps.homepage.views.forgot' - 但您已经设置了查看功能forgot

顺便说一句,请注意,Django已经包含一个“重置密码”功能 - 请参阅the docs

+0

谢谢丹尼尔让我检查你建议给我的文档。 – Eric