That's it! Thanks very very much, you help me a lot!
2015-01-08 19:10 GMT+08:00 James Schneider <[email protected]>:
> 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 a topic in the
> Google Groups "Django users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/django-users/ZIsrf9vEXyg/unsubscribe.
> To unsubscribe from this group and all its topics, 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
> <https://groups.google.com/d/msgid/django-users/CA%2Be%2BciVLaCjYiYFkbLHZuzf2tjU69i%3Dgt1f9TMMShspNyUqNZA%40mail.gmail.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/CAOV3_ptnXzKCFmomS0DJjnJrsCB%2BbdOFa%2Bk45K6yaT7TPMBA_g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.