簡體   English   中英

Django 重定向以查看不在同一個應用程序中的內容

[英]Django redirect to view that is not in the same app

我的 Django 項目中有一個名為 users 的應用程序。 登錄users/login.html后,我希望它轉到URL /home.html

我的模板結構是:

--> users

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

--> base.html

--> home.html

但由於某種原因,它找不到 home.html。 這是我在用戶應用程序中的 views.py 和 urls.py:

視圖.py

from django.http import HttpResponseRedirect
from django.shortcut import render
from django.contrib.auth import login
from django.contrib.auth.decorators import login_required
from .forms import LoginForm

def login_view(request):
    """
    Function based view for handling log-in
    """
    form = LoginForm(request.POST or None)
    if request.POST and form.is_valid():
        user = form.login(request)
        if user:
            login(request, user)
            return HttpResponseRedirect('/home/html')
    return render(request, 'users/login.html', {'form': form})

@login_required(login_url='login/')
def home(request):
    return render(request, 'home', {'home': home})

網址.py

from django.conf.urls import url
from . import views

urlpatterns = [
        url(r'^$', views.home, name='home'),
        url(r'^login/$', views.login_view, name='login'),
]

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

@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導入home

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"而不是"users/home/" ..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM