【发布时间】:2016-01-05 06:49:01
【问题描述】:
我一直在做这个页面,可以在其中订阅该站点,并且我一直在尝试在 Django 模板中使用 jQuery 触发表单。 现在,如果用户想订阅,注册页面会正确打开,如果一切正常,注册会顺利进行,然后会返回可以登录的主页;如果出现错误(错误的用户名或电子邮件或密码),它会返回主页而不指出任何错误 - 只有当您再次点击打开注册表时才会显示错误。
我将复制粘贴我的代码。
- 主页.html
{% if user.is_authenticated %}
<h2>Welcome back, {{ user.username }}. Let's explore the World together!</h2>
{% else %}
<!-- Trigger the modal with a button -->
<h2><button id="myBtn">Subscribe now :)</a></h2>
<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3 class="modal-title">Register with Tent a garden</h3>
</div>
<div class="modal-body">
{% if registered %}
<h4>Tent a garden says: <strong>thank you for registering!</strong></h4>
<a href="/">Return to the homepage.</a><br />
{% else %}
<h4>Tent a garden says: <strong>register here!</strong></h4><br />
<form id="user_form" method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
{{ user_form.as_p }}
{{ profile_form.as_p }}
<input type="submit" class="btn btn-info" name="submit" value="Register" />
</form>
{% endif %}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$("#myBtn").click(function(){
$("#myModal").modal();
});
});
</script>
<h2>Are you already a member? Then, <a href="/login/">login</a>!</h2>
{% endif %}
-
views.py
from django.shortcuts import render_to_response, render, redirect from django.template import RequestContext from django.http import HttpResponseRedirect, HttpResponse from django.core.urlresolvers import reverse from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required from tentagarden.forms import UserForm, UserProfileForm def home(request): context = RequestContext(request) registered = False if request.method == 'POST': user_form = UserForm(data=request.POST) profile_form = UserProfileForm(data=request.POST) if user_form.is_valid() and profile_form.is_valid(): user = user_form.save() user.set_password(user.password) user.save() profile = profile_form.save(commit=False) profile.user = user if 'picture' in request.FILES: profile.picture = request.FILES['picture'] profile.save() registered = True else: print user_form.errors, profile_form.errors else: user_form = UserForm() profile_form = UserProfileForm() return render_to_response( 'tentagarden/home.html', {'user_form': user_form, 'profile_form': profile_form, 'registered': registered}, context) -
forms.py
from django import forms from django.forms import ModelForm from tentagarden.models import UserProfile from django.contrib.auth.models import User class UserForm(forms.ModelForm): password = forms.CharField(widget=forms.PasswordInput()) class Meta: model = User fields = ('username', 'email', 'password') class UserProfileForm(forms.ModelForm): class Meta: model = UserProfile fields = ('website', 'picture') -
models.py
from django.db import models from django.utils import timezone from autoslug import AutoSlugField from django.contrib.auth.models import User class UserProfile(models.Model): user = models.OneToOneField(User) website = models.URLField(blank=True) picture = models.ImageField(upload_to='profile_images', blank=True) def __unicode__(self): return self.user.username -
urls.py
from django.conf.urls import patterns, url urlpatterns = patterns('tentagarden.views', url(r'^$', 'home', name='home'), url(r'^list/$', 'list', name='list'), url(r'^login/$', 'user_login', name='login'), url(r'^logout/$', 'user_logout', name='logout'), )
我错过了什么?
谢谢!
【问题讨论】:
-
您希望这部分的哪一部分表现得不同?如果表单出现错误,您是否希望模态框自动弹出?
标签: jquery python html django forms