【问题标题】:Django - 2app 2 views 2 templates in one pageDjango - 2app 2 在一个页面中查看 2 个模板
【发布时间】:2013-01-25 04:38:56
【问题描述】:

我正在尝试进入 django 开发,但我对此还是个新手... 这是我的问题:

我有:

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

  • App2 命名成员 - 用于管理用户

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

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

  • 视图 1/模板 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))
    
  • View 2 / templates 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 个不同的 url 调用的。好吧,我有点迷路了 如果有人能启发我的想法,我会很高兴...

【问题讨论】:

  • LoginRequest 的代码是否正常? return HttpResponseRedirect('/profile/') 行之后似乎有额外的缩进。
  • 抱歉复制粘贴错误,在我的 views.py 文件中已完成。

标签: django django-templates django-views


【解决方案1】:

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

【讨论】:

  • 非常感谢您的回答。为了清楚地理解,我应该将 2 个上下文传递给主页“主页”和一个用于登录表单的上下文,并且在提交登录请求时,它应该针对登录视图和模板,其将处理登录连接并重定向到页面 i想要。
【解决方案2】:

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

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

此外,您应该考虑查看他们的 tutorial,因为它涵盖了您正在尝试做的事情并介绍了大部分核心功能。

希望这会有所帮助。

【讨论】:

  • 非常感谢您的回答!我会查看您的链接,我前一阵子已经学习了 django 教程,但也许我现在错过了一些部分......有关信息,我遵循了 hackedexistence.com 上的教程
猜你喜欢
  • 1970-01-01
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 2020-03-06
  • 2011-08-20
  • 2020-05-13
相关资源
最近更新 更多