ValueError, когда я пытаюсь реализовать потерянный пароль - PullRequest
1 голос
/ 05 октября 2011

Я играл с Python, я новичок в Python Language, поэтому я пытаюсь сбросить утерянный пароль, но я сталкиваюсь с исключением 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:

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

Что я не делаю хорошо?

1 Ответ

0 голосов
/ 05 октября 2011

Третий параметр функции url должен представлять собой словарь, состоящий из дополнительных аргументов для передачи в функцию представления.По какой-то причине у вас есть 'blog.apps.homepage.views.forgot' вместо этого - но вы уже установили функцию просмотра, forgot.

Кстати, обратите внимание, что в Django уже есть функция «сброса пароля» -см документы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...