Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django if query';比赛_Python_Ajax_Django - Fatal编程技术网

Python 使用Django if query';比赛

Python 使用Django if query';比赛,python,ajax,django,Python,Ajax,Django,我知道这段代码不起作用,因为请求在某种程度上是不够的,但我不确定如何着手纠正它。我试图对其进行配置,以便如果ajax数据与用户名匹配,它将重定向到home.html。任何人的帮助都会非常宝贵!(PS:print调用正在工作-如果用户存在,它将打印“else”语句,反之亦然。然而,重定向仍然不起作用!) views.py def profile(request): profname = request.GET.get('profname', None) obj =

我知道这段代码不起作用,因为请求在某种程度上是不够的,但我不确定如何着手纠正它。我试图对其进行配置,以便如果ajax数据与用户名匹配,它将重定向到home.html。任何人的帮助都会非常宝贵!(PS:print调用正在工作-如果用户存在,它将打印“else”语句,反之亦然。然而,重定向仍然不起作用!)

views.py

 def profile(request):
        profname = request.GET.get('profname', None)
        obj = User.objects.filter(username=profname)
        if not obj:
            print("I need this time to redirect to error page")

        else:
            print ("I need this to redirect home")
            return redirect('home')
        return render(request, 'profile.html')
html


只需在调用重定向之前放一个return语句,它就会返回一个HttpResponse对象,需要返回给调用方


编辑:OP更新并添加了返回,但这应该是一个很好的修复方法。请尝试传递URL和布尔值,指示是否应重定向

如果你在url配置中使用app_名称,别忘了使用“app_名称:home”,这是我发布的代码中的一个输入错误。问题是它仍然没有重定向,但仍会打印。您可以尝试使用reverse_lazy()吗?从django.urls导入reverse_lazy重新读取后,您可能还希望处理来自JS的重定向,用要重定向到的url和指示是否应该重定向的布尔值传递数据,并在AJAX返回后使用JS重定向。我想这才是真正的问题嘿,如果你不介意的话,还有一个问题。。。如何将'profname'变量发送到重定向到的页面?我需要这些信息来从后端文件中获取有关页面加载内容的信息。通过从Ajax请求返回重定向响应,您不会在前端获得重定向。这根本不是Ajax的工作方式。另外,您没有对响应执行任何操作,不管它是什么,因为您没有
success
回调。我该如何着手纠正这个问题呢?因为在这两种情况下,您似乎都需要重定向,所以我不认为Ajax是正确的工具。看起来你可以在没有任何Javascript的情况下达到预期效果,只需将你的按钮链接到你现在使用的url,然后检查数据库并执行适当的服务器端重定向是的,但在最后一个项目中,我将把按钮的文本发送到后端,看看用户是否存在,然后重定向到包含该用户特定信息的页面。然后,您需要在URL中使用参数,或者以表单形式发送数据
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
<h1>jkkk</h1>
     <a id="butt" href="#">Get Data</a>
 </body>
 <script>


$(document).ready(function(){
  $("#butt").click(function(){

           $.ajax({
           type: "get",
           url: 'profile',
           datatype:'json',
            data: {
            'profname': 'jillsmith',
            },

       }); 
  });
});
</script>
urlpatterns = [
     path('', views.explore, name='explore'),
     path('happening/profile/', views.profile, name='profile'),
     path('happening/', views.happening, name='happening'),
     path('home/', views.home, name='home'),
     path('happening/test/', views.test, name='test'),
     path('home/likes/', views.likes, name='likes'),



]