Oh, you are passing a URL to render() instead of a template name. Try
something like this:
return render(request, 'signup.html', {'form': signup_form})
Sorry, didn't catch that the first time.
-James
On Thu, Jan 8, 2015 at 1:34 AM, 赵飞 <[email protected]> wrote:
> I want to make a signup page, when user click signup, it will check if the
> two password are the same, when not, give a error message after "confirm
> password".
>
> But when I call "return render(request, reverse("accounts:signup"),
> {'form': signup_form}) " in my views.py, it shows me an error, the
> traceback is:
>
> Environment:
>
> Request Method: POST
> Request URL: http://127.0.0.1:8000/accounts/signup_post/
>
> Django Version: 1.7
> Python Version: 2.7.5
> Installed Applications:
> ('django.contrib.admin',
> 'django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.messages',
> 'django.contrib.staticfiles',
> 'accounts')
> Installed Middleware:
> ('django.contrib.sessions.middleware.SessionMiddleware',
> 'django.middleware.common.CommonMiddleware',
> 'django.middleware.csrf.CsrfViewMiddleware',
> 'django.contrib.auth.middleware.AuthenticationMiddleware',
> 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
> 'django.contrib.messages.middleware.MessageMiddleware',
> 'django.middleware.clickjacking.XFrameOptionsMiddleware')
>
> Template Loader Error:
> Django tried loading these templates, in this order:
> Using loader django.template.loaders.filesystem.Loader:
> Using loader django.template.loaders.app_directories.Loader:
>
> Traceback:
> File
> "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/core/handlers/base.py"
> in get_response
> 111. response = wrapped_callback(request,
> *callback_args, **callback_kwargs)
> File "/Users/feizhao/dropbox/nahan/accounts/views.py" in signup_post
> 64. return render(request, reverse("accounts:signup"), {'form':
> signup_form})
> File
> "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/shortcuts.py"
> in render
> 48. return HttpResponse(loader.render_to_string(*args, **kwargs),
> File
> "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/template/loader.py"
> in render_to_string
> 170. t = get_template(template_name, dirs)
> File
> "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/template/loader.py"
> in get_template
> 144. template, origin = find_template(template_name, dirs)
> File
> "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/template/loader.py"
> in find_template
> 136. raise TemplateDoesNotExist(name)
>
> Exception Type: TemplateDoesNotExist at /accounts/signup_post/
> Exception Value: /accounts/signup/
>
> my account app looks like:
>
> $ tree -L 3 accounts
> accounts
> ├── __init__.py
> ├── admin.py
> ├── forms.py
> ├── locale
> │ └── zh_CN
> ├── migrations
> │ ├── 0001_initial.py
> │ ├── __init__.py
> ├── models.py
> ├── static
> │ └── accounts
> │ └── login.css
> ├── templates
> │ └── accounts
> │ ├── base.html
> │ ├── login.html
> │ └── signup.html
> ├── tests.py
> ├── urls.py
> ├── views.py
>
> urls.py:
>
> urlpatterns = patterns(
> '',
> url(r'^accounts/', include('accounts.urls', namespace="accounts")),
> url(r'^admin/', include(admin.site.urls)),
> )
>
> accounts/urls.py:
>
> urlpatterns = patterns(
> '',
> url(r'^login/$', views.login, name='login'),
> url(r'^signup/$', views.signup, name='signup'),
> url(r'^login_post/$', views.login_post, name='login_post'),
> url(r'^signup_post/$', views.signup_post, name='signup_post'),
> )
>
> signup_post function in views.py:
>
> def signup_post(request):
> if request.method == 'POST':
> signup_form = forms.SignupForm(request.POST)
>
> if signup_form.is_valid():
> signup_info = signup_form.cleaned_data
> username = signup_info['username']
> email = signup_info['email']
> password = signup_info['password_1']
> user = User.objects.create_user(
> username=username,
> email=email,
> password=password)
> user.save()
>
> else:
> signup_form = forms.SignupForm()
>
> return render(request, reverse("accounts:signup"), {'form':
> signup_form})
>
> I have read [Django TemplateDoesNotExist][1] and other similar questions,
> but no help!
>
> [1]:
> https://stackoverflow.com/questions/4765003/django-templatedoesnotexist
>
> 在 2015年1月7日星期三UTC+8下午10时03分09秒,赵飞写道:
>
>> I want to make a signup page just like:
>>
>>
>> <https://lh5.googleusercontent.com/-BYeglZkQ0cM/VK06PkzpdPI/AAAAAAAAAN0/l5xB5VdkbJk/s1600/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%2B2015-01-07%2B%E4%B8%8B%E5%8D%889.52.08.png>
>> When user click signup, I want to check the if the two password are the
>> same, when not, give a error message after "confirm password". Here is my
>> code:
>>
>> *forms.py*
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *class SignupForm(forms.Form): username = forms.CahrField(
>> label=_("username"), max_length=30, ) email =
>> forms.EmailField(label=_('email'),) password_1 = forms.CharField(
>> label=_("password"), widget=forms.PasswordInput, ) password_2
>> = forms.CharField( label=_("password_confirmed"),
>> widget=forms.PasswordInput, ) def clean_password_2(self):
>> password_1 = self.cleaned_data.get("password_1") password_2 =
>> self.cleaned_data.get("password_2") if password_1 and password_2 and
>> password_1 != password_2: raise
>> forms.ValidationError(_('password confirm failed')) return
>> password_2 signup.html*
>>
>> <form method="post" action="{% url 'accounts:signup_post' %}">
>> {% csrf_token %}
>> <table>
>> {% for field in form %}
>> <tr>
>> <td>{{ field.label_tag }}</td>
>> <td>{{ field }}</td>
>> <td>{{ field.errors }}</td>
>> </tr>
>> {% endfor %}
>> </table>
>>
>> <input type='submit' id="submit" value={% trans "signup" %}>
>> <a href="{% url 'accounts:login' %}">{% trans "Already have
>> accounts?" %}</a>
>> </form>
>>
>>
>>
>> *views.py*
>>
>> def signup_post(request):
>> if request.method == 'POST':
>> signup_form = forms.SignupForm(request.POST)
>>
>> if signup_form.is_valid():
>> signup_info = signup_form.cleaned_data
>> username = signup_info['username']
>> email = signup_info['email']
>> password = signup_info['password_1']
>> user = User.objects.create_user(
>> username=username,
>> email=email,
>> password=password)
>> user.save()
>> # redirect to main page(not written so far)
>> else:
>> # I guess something wrong here, but no idea how to fix it.
>> return redirect(reverse("accounts:signup"))
>>
>> else:
>> signup_form = forms.SignupForm()
>>
>> return render(reverse("accounts:signup"), {'form': signup_form})
>>
>> Can anyone help me out?
>> *Thanks!*
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/d62f49e5-993d-492b-9b7b-1e3cb329e63d%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/d62f49e5-993d-492b-9b7b-1e3cb329e63d%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/CA%2Be%2BciVLaCjYiYFkbLHZuzf2tjU69i%3Dgt1f9TMMShspNyUqNZA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.