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.

Reply via email to