Django - 2app 2在一个页面中查看2个模板

时间:2013-02-09 14:23:32

标签: django django-templates django-views

我正试图进入django dev,但我对此很新手...... 这是我的问题:

我有:

  • App1 - 用于处理我的网站发布
  • 查看1
  • 模板1管理view1:index.html

  • App2指定成员 - 用于管理用户

  • 查看2
  • 模板2管理view2:login.html

基本上,1组是我的主页,2组是用户登录表。 我想将我的登录表单嵌入网站主页的右侧菜单中,就像我们在许多网站上看到的那样。

  • 查看1 / templates 1从base.html扩展我的内容块

    def MainHomePage(request):
    homepage = HomePage.objects.get(pk=1)
    context = {'homepage': homepage}
    return render_to_response('index.html', context, context_instance=RequestContext(request))
    
  • 查看2 /模板2使用我的登录表单

    从base.html扩展我的right_menu
    def LoginRequest(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/profile/')
        if request.method =='POST':
        form =LoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            member = authenticate(username=username, password=password)
            if member is not None:
                login(request, member)
                return HttpResponseRedirect('/')
            else:
                return render_to_response('login.html', {'form':form}, context_instance=RequestContext(request))
           else:
                return render_to_response('login.html', {'form':form}, context_instance=RequestContext(request))
    else:
        form = LoginForm()
        context = {'form':form}
        return render_to_response('login.html', context, context_instance=RequestContext(request))
    

我不知道该怎么做! 我想也许我应该在view1中导入view2并为两者返回一个正确的响应 那些模板应该合并呢? 无法看到2个差异网址如何调用它们。好吧,我有点迷茫 如果有人能启发我的想法,我会很高兴...

2 个答案:

答案 0 :(得分:0)

查看您的登录视图,它似乎没有做任何您需要嵌入LoginRequest视图的内容。相反,您只需将表单作为上下文传递到主页面模板,将其显示在您想要的位置,并将form的操作更改为LoginRequest处理的URL。这样,LoginRequest视图的行为就像从login.html

登录时一样

答案 1 :(得分:-1)

你的templates实际上会“指点”。例如,用户将登陆MainHomePage,它基本上是index.html模板。在该模板中,您将定义登录表单。 Login窗体的操作可以指向LoginRequest视图。

我想指出,您不需要单独的应用来管理用户。这可以通过using/extending Django's admin site完成。

此外,您应该考虑浏览tutorial,因为它涵盖了您尝试执行的操作并介绍了大部分核心功能。

希望这有帮助。