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)),
)
顯示你的主要網址conf你在哪裏,包括應用程序的網址 –
我想你總是會在第一個視圖(除非有一個前綴「登錄」模式),因爲,我懷疑它是第一個在你的' urls.py'。 – Germano
我已經將項目urls.py添加到問題字段。不幸的是,我已經嘗試在全球urls.py文件中更改應用程序順序以避免此錯誤。是否有其他解決方法? – BlueSapphire