2013-07-09 81 views
0

我在寫一個包含用戶註冊和登錄功能的應用程序。登錄成功/註冊操作後,用戶現在將被重定向至user.htmlDjango重定向 - 爲什麼頁面HTML顯示爲URL參數?

,整個HTML文本顯示爲一個URL PARAM,這是引發錯誤404

我的視圖代碼視圖處理:

def index(request): 
    return render(request, "app/index.html") 

def user(request): 
    return render(request, "app/user.html") 

def userLogin(request): 
    print "Loggin In!" 
    loginUser = authenticate(username = request.POST["username"], password = request.POST["password"]) 
    print loginUser.username 
    print loginUser.is_staff 
    if loginUser is not None: 
    if loginUser.is_active: 
     login(request, loginUser) 
     return HttpResponseRedirect(reverse(user)) 

和我的網址:

urlpatterns = patterns("", 
    url(r'^$', views.index, name = "index"), 
    url(r'^user/$', views.user), 
    url(r'^registerNewUser/$', views.registerNewUser), 
    url(r'^userLogin/$', views.userLogin), 
) 

在重定向,這是顯示消息:

Django tried these URL patterns, in this order: 

^admin/ 
^app/ ^$ [name='index'] 
^app/ ^user/$ 
^app/ ^registerNewUser/$ 
^app/ ^userLogin/$ 


The current URL, app/<html><head><title>User Landing Page</title><link rel = "stylesheet" type = "text/css" href = "/static/css/jquery-ui.min.css" ><link rel = "stylesheet" type = "text/css" href = "/static/css/main.css"><script type = "text/javascript" src = "/static/js/jquery.js"></script><script type = "text/javascript" src = "/static/js/jquery-ui.min.js"></script><script type = "text/javascript" src = "/static/js/jquery.cookie.js"></script><script type = "text/javascript" src = "/static/js/csrfSetup.js"></script></head><body>User is logged</body></html>, didn't match any of these. 

爲了在成功登錄時呈現HTML,我需要做些什麼?

回答

1

請再次閱讀的Django的文檔和reverse方法:在你的views.py

def index(request): 
    return render(request, "app/index.html") 

def user(request): 
    return render(request, "app/user.html") 

def userLogin(request): 
    loginUser = authenticate(username = request.POST["username"], password = request.POST["password"])  
    if loginUser is not None: 
     if loginUser.is_active: 
     login(request, loginUser) 
     return HttpResponseRedirect(reverse("user")) #See that! it's a url name! 
    return HttpResponse(reverse("index")) # What happens if can't log in? 

在你的urls.py

urlpatterns = patterns("", 
    url(r'^$', views.index, name = "index"), 
    url(r'^user/$', views.user, name="user"), #Note the "user"! 
    url(r'^registerNewUser/$', views.registerNewUser), 
    url(r'^userLogin/$', views.userLogin), 
) 
+0

你幾乎是正確的,檢查我的答案爲我的解決方案。感謝提示! – Jason

0

這裏是一個工作的解決方案爲了我。它由使用reverse()HttpResponse()組成。

具體地說,

def index(request): 
    return render(request, "app/index.html") 

def user(request): 
    if request.user.is_authenticated: 
    if not request.user.is_staff: 
     return render(request, "app/user.html") 
    else: 
     return render(request, "app/admin.html") 

    else: 
    return HttpResponse(reverse(index)) 

def userLogin(request): 
    loginUser = authenticate(username = request.POST["username"], password = request.POST["password"]) 

    if loginUser is not None: 
    if not loginUser.is_active: 
     loginUser.is_active = True 
     loginUser.save() 

    login(request, loginUser) 

    #Note HttpResponse and unquoted user method 
    return HttpResponse(reverse(user)) 
else: 
    return HttpResponse(simplejson.dumps({"login" : "failed"})) 

具有以下urls.py配置

urlpatterns = patterns("", 
    url(r'^$', views.index, name = "index"), 
    url(r'^$', views.user, name = "user"), 
    url(r'^user/$', views.user, name = "user"), 
    url(r'^registerNewUser/$', views.registerNewUser), 
    url(r'^userLogin/$', views.userLogin), 
) 

組合得到了重定向努力成功登錄或註冊之後的相關頁面。

相關問題