0

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

我有 :

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

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

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

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

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

4

2 回答 2

0

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

于 2013-02-09T16:19:45.300 回答
-1

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

我想指出,您不需要单独的应用程序来管理用户。这可以通过使用/扩展 Django 的管理站点来完成。

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

希望这可以帮助。

于 2013-02-09T14:52:49.030 回答