2017-05-23 67 views
1

我在我的Django項目中有一個名爲users的應用程序。登錄到用戶/ login.html的,我希望它去的URL /home.htmlDjango重定向到查看不在同一個應用程序

我的模板結構是:

--> users 

| 
.....-->login.html 

--> base.html 

--> home.html 

出於某種原因,它無法找到home.html做爲雖然。這裏是我的views.py和urls.py在用戶應用程序:

views.py

views.py

urls.py

urls.py

+4

請不要鏈接到的圖像。在這裏顯示代碼*,作爲*文本*。 –

+0

無論如何,你沒有「/home.html」的URL,你有一個「/ home /」的URL。 –

+0

'return HttpResponseRedirect('/')'並且在urlpatterns中,你應該在下一個url後面加上第一個url規則('url(r'^ $'...'')('url(r'^ login/$')。 ..)') – doru

回答

1

你需要改變你的主視圖像這樣,

@login_required 
def home(request): 
    return render(request, 'home.html', {}) 

此外,在您的login_view,

def login_view(request): 
    if request.method=="POST": 
     form = LoginForm(request.POST) 
     if form.is_valid(): 
      username = form.cleaned_data.get('username') 
      password = from.cleaned_data.get('password') 
      user = authenticate(username=username, password=password) 
      if user: 
       login(request, user) 
       return redirect('users:home') 
    else: 
     form = LoginForm() 
    context = dict(form=form) 
    return render(request, 'users/login.html', context) 

編輯

或者你可以只導入視圖進入project_level urls.py

這樣, 從users.views導入家裏

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    #leave it blank... 
    url(r'^/', include('users.urls', namespace='users')), 
    url(r'^home/', home, name='home'), 
] 

不要忘了從users.urls.py文件中刪除URL。 然後,您的主頁將「/家」而非「用戶的/ home /」 ..

+0

您能否讓我更深入瞭解上下文字典實際上做了什麼?我檢查了文檔,我仍然不確定它的目的是什麼 – iFengo

+0

上下文字典提供需要的變量或對象呈現給模板,它告訴模板這些變量來自django視圖,並且需要在html模板中公開,我們使用{{}}標籤在模板中指定它們,希望你有個想法。 – zaidfazil

+0

真棒謝謝。我改變了我的主視圖和login_view到你所說的,現在我得到了「未找到'home'''home'不是有效的視圖函數或模式名稱。」 – iFengo

相關問題