#python #django
#python #django
Вопрос:
Я играл с Python, я новичок в языке Python, поэтому я пытаюсь сбросить потерянный пароль, но я сталкиваюсь с исключением 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
Что у меня не получается?
Комментарии:
1. Вы дважды опубликовали свое представление вместо своих моделей, но, что более важно, вы не опубликовали свои URL-адреса, в чем, я думаю, ошибка.
2. Нет, опубликуйте весь urls.py пожалуйста.
3. Мне жаль, что я опубликовал все сейчас. Танки.
Ответ №1:
Предполагается, что третьим параметром url
функции является словарь, состоящий из дополнительных аргументов для передачи функции просмотра. По какой-то причине 'blog.apps.homepage.views.forgot'
вместо этого у вас есть — но вы уже установили функцию просмотра, forgot
.
Кстати, обратите внимание, что Django уже включает функцию «сброс пароля» — см. Документы.