I have read the doc, what you say is helpfull, thanks! 在 2015年1月8日星期四UTC+8下午7时33分42秒,Edgar Gabaldi写道: > > There is not your problem, but maybe will be in future. The best way to > clean fields that depend of other fields is override the clean method of > form. > > > https://docs.djangoproject.com/en/1.7/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other > > On Thu, Jan 8, 2015 at 9:28 AM, 赵飞 <[email protected] <javascript:>> > wrote: > > That's it! Thanks very very much, you help me a lot! > > 2015-01-08 19:10 GMT+08:00 James Schneider <[email protected] > <javascript:>>: > > 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] <javascript:>> > 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= > > ...
-- 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/1ea2f037-5fc3-4283-b650-4f9bed896c7c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

