我是Django的新手,并通过大量的试错过程来学习它。大多是错误。
这就是我的观点 来自django.contrib.auth import authenticate,login 来自django.shortcuts导入render_to_response
def login(request):
def errorHandle(error):
form = LoginForm()
return render_to_response('login.html', {
'error' : error,
'form' : form,
})
if request.method == 'POST': # If the form has been submitted...
form = LoginForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
# Redirect to a success page.
login(request, user)
return render_to_response('userprof/login.html', {
'username': username,
})
else:
# Return a 'disabled account' error message
error = u'account disabled'
return errorHandle(error)
else:
# Return an 'invalid login' error message.
error = u'invalid login'
return errorHandle(error)
else:
error = u'form is invalid'
return errorHandle(error)
else:
form = LoginForm() # An unbound form
return render_to_response('login.html', {
'form': form,
})
这是我的模特
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class UserProfile(models.Model):
user = models.OneToOneField(User)
#other fields here
def __str__(self):
return "%s's profile" % self.user
def create_user_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=User)
我的模板应该有一个用户名和密码字段,以便将值发送到此视图。 我对django用户widget的使用方式非常困惑,因此这些疑惑。
另一件事是,我的urls.py应该是什么? Ps:我现在收到一个反向错误。
答案 0 :(得分:0)
Django已经有了一个内置的视图 - django.contrib.auth.views.login
(可高度自定义)。 Documentation将为您提供示例模板和网址格式。