重定向无法发送回复

时间:2017-02-12 17:26:23

标签: python django django-views

我在Django中使用重定向将用户发送到另一个页面,但它无法这样做。

views.py

def func1(request):
    if not request.user.is_authenticated():
        return render(request, 'login/login/login.html')
    else:
        if request.method == "POST":
            return redirect('base:func2')
        return render(request, 'base/home/index.html')


def func2(request):
    if not request.user.is_authenticated():
        return render(request, 'login/login/login.html')
    else:
        if request.method == "POST":
            ....
            return render(request,
                          'bla_bla_bla.html',
                          {'location': location})
        elif request.method == 'GET':
            print('COntrol is here')
            some_details_form = SomeDetailsForm()
            return render(request, 'some_url/index.html',
                          {'some_details_form': some_details_form})

urls.py

app_name = 'base'
url(r'^another_url/$', views.func2, name='func2'),
url(r'^some_url/$', views.func1, name='func1'),

碱/家庭/ index.html中

<div class="button" onclick="clicked_it()">
    <span id="forward"> Go Further   </span>
</div>

index.js

function clicked_it() { $.post( "/base/some_url/"); };

所以控件确实转到 func2 ,因为我可以看到打印语句输出 COntrol在这里 但是我没有看到func2能够在return语句中呈现页面。控件在哪里卡住了?

2 个答案:

答案 0 :(得分:1)

使用Ajax的重点在于它覆盖了浏览器导航处理。如果您希望Ajax重定向,则需要在js中执行 - 或者,根本不使用Ajax。

答案 1 :(得分:0)

重定向需要您需要重定向到的相对或绝对网址。 你需要使用django反向URL解析器

public class Account
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string PasswordHash { get; set; }
    public DateTime Created { get; set; }

    List<User> Users { get; set; }
}

public class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public DateTime Birthday { get; set; }
    public Account Account { get; set; }
}