2014-06-25 35 views
0

將其他應用程序添加到我的django 1.6項目後,我遇到了django的HttpResponseRedirect函數的一個奇怪問題。Django重定向到其他應用程序中的錯誤視圖

我有兩個應用程序的登錄視圖,但是當我嘗試登錄到第二個應用程序時,我被重定向到first_app/list而不是second_app/index。

所以在我的第一個應用程序的看法是

def login(request): 

aut_form = auth.forms.AuthenticationForm() 
if(request.method == 'POST'): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = auth.authenticate(username=username, password=password) 
    if user is not None: 
     if user.is_active: 
      auth.login(request, user) 
      return HttpResponseRedirect(reverse('fist_app:list')) 
     else: 
      return HttpResponseRedirect(reverse('fist_app:login') + '?loggedout') 
    else: 
     return HttpResponseRedirect(reverse('fist_app:login') + '?invalid') 
else: 
    return render(request, 'first_app/login.html', {'form' : aut_form}) 

def list(request): 

if request.user is None or not request.user.is_authenticated(): 
    return HttpResponseRedirect(reverse('fist_app:login')) 
else:  
    return response 

,並在第二個應用程序的views.py看起來幾乎相同

def login(request): 

aut_form = auth.forms.AuthenticationForm() 
if(request.method == 'POST'): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = auth.authenticate(username=username, password=password) 
    if user is not None: 
     if user.is_active: 
      auth.login(request, user) 
      print("success") 
      return HttpResponseRedirect(reverse('second_app:index')) 
     else: 
      return HttpResponseRedirect(reverse('second_app:login') + '?loggedout') 
    else: 
     return HttpResponseRedirect(reverse('second_app:login') + '?invalid') 
else: 
    return render(request, 'second_app/login.html', {'form' : aut_form}) 

def index(request): 
return render(request, 'second_app/index.html') 

我也檢查了我的兩個應用程式的urls.py正則表達式太模糊。第二個應用程序的first_app的

urls.py

urlpatterns = patterns('first_app.views', 
    url(r'^list/$', views.list, name='list'), 
    url(r'^login$', views.login, name='login'), 
) 

urls.py

urlpatterns = patterns('second_app.views', 
    url(r'^login$', views.login, name='login'), 
    url(r'^index$', views.index, name="index"), 
) 

我有什麼改變,以重定向到的登錄頁面的相關應用正確的觀點?

和我的項目的urls.py

urlpatterns = patterns('', 
    url(r'^backend/', include('second_app.urls', namespace="second_app")), 
    url(r'^polls/', include('first_app.urls', namespace="first_app")), 
    url(r'^admin/', include(admin.site.urls)), 
) 
+0

顯示你的主要網址conf你在哪裏,包括應用程序的網址 –

+0

我想你總是會在第一個視圖(除非有一個前綴「登錄」模式),因爲,我懷疑它是第一個在你的' urls.py'。 – Germano

+0

我已經將項目urls.py添加到問題字段。不幸的是,我已經嘗試在全球urls.py文件中更改應用程序順序以避免此錯誤。是否有其他解決方法? – BlueSapphire

回答

0

看你有共同的代碼片段之後。我猜測唯一可能的原因是,您沒有在表單action下使用模板login.html中的應用專用login網址。

相關問題