python - Django 重定向到不在同一个应用程序中的 View

标签 python html django url view

我的 Django 项目中有一个名为 users 的应用程序。登录 users/login.html 后,我希望它转到 URL/home.html

我的模板结构是:

--> users

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

--> base.html

--> home.html

由于某种原因,它无法找到 home.html。这是我在用户应用程序中的views.py和urls.py:

View .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})

url.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'),
]

最佳答案

您需要像这样更改您的主页 View ,

@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)

编辑

或者您可以将 View 导入到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" 而不是 "users/home/"..

关于python - Django 重定向到不在同一个应用程序中的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44141216/

相关文章:

python - 找不到参数 'wagtailadmin_explore' ',)' 的 '(' 反向

python - pandas DataFrame 到带有内联样式而不是 CSS 的 html

python - 为什么有一个以列表作为值的索引可以,但不能用于列?

python - 使用 Pandas 计算不规则时间序列的每日平均值

python - PDFminer:PDFTextExtractionNotAllowed 错误

jquery - 使用 jquery 淡出整个页面

css - 具有相同名称的子类

html - CSS 将中心 Font Awesome 图标垂直对齐到文本

django - Django中的前端原型(prototype)/骨架

python - 如何根据对象实例自定义 Django 内联管理表单