1
我是Django的新手,我需要你的帮助。Django。登录后重定向用户
我在基于类的视图上构建我的应用程序。对于登录我使用默认django.contrib.auth.models.User
类和一个一对一的关系为UserInfo
类用于存储更多的信息(如个人资料照片等):
models.py
class UserInfo(models.Model):
user = models.OneToOneField(User)
birth_date = models.DateField()
avatar = models.FilePathField()
后登录成功我想要将UserInfo
数据传递给主页(定义为DetailView
)。所以目前我有这样的事情:
urls.py
urlpatterns = patterns('',
url(r'^$', Index.as_view(), name='index'), #Returns page with login form.
url(r'^login$', Index.as_view(), name='login'), #Proceed login form and redirects to homepage.
url(r'^home/id(?P<pk>\d+)$', login_required(Home.as_view(), login_url='/'), name='home'),
)
index.py
#Login proceed here
class Index(generic.FormView):
template_name = 'index.html'
form_class = AuthenticationForm
success_url = '/home/id'
def post(self, request, *args, **kwargs):
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username = username, password = password)
if user is not None and user.is_active:
login(request, user)
return redirect('/home/id', pk = user.id)
else:
return redirect('/', {'error' : 'Incorrect login or password'})
home.py
class Home(generic.DetailView):
model = UserInfo
template_name = 'home.html'
不幸的是它不起作用。你能帮我理解它应该如何工作吗? 而我应该如何获得UserInfo
数据在我的home.html
页面内?