Python Django |在 include() 的情况下,视图必须是可调用的或列表/元组 [重复]

Posted

技术标签:

【中文标题】Python Django |在 include() 的情况下,视图必须是可调用的或列表/元组 [重复]【英文标题】:Python Django | view must be a callable or a list/tuple in the case of include() [duplicate] 【发布时间】:2017-01-23 02:23:24 【问题描述】:

文件“\app\urls.py”,第 10 行,在 名称='登录'), 文件“\django\conf\urls__init__.py”,第 85 行,在 url raise TypeError('在 include() 的情况下,视图必须是可调用的或列表/元组。') TypeError:视图必须是可调用的或 在 include() 的情况下为列表/元组。

urls.py

    urlpatterns = [
    # previous login view
    # url(r'^login/$', views.user_login, name='login'),
    # login / logout urls
    url(r'^login/$',
        'django.contrib.auth.views.login',
        name='login'),
    url(r'^logout/$',
        'django.contrib.auth.views.logout',
        name='logout'),
    url(r'^logout-then-login/$',
        'django.contrib.auth.views.logout_then_login',
        name='logout_then_login'),
]

views.py

from django.http import HttpResponse
from django.shortcuts import render
from django.contrib.auth import authenticate, login
from .forms import LoginForm
from django.contrib.auth.decorators import login_required


def user_login(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            user = authenticate(username=cd['username'],
                                password=cd['password'])
            if user is not None:
                if user.is_active:
                    login(request, user)
                    return HttpResponse('Authenticated successfully')
                else:
                    return HttpResponse('Disabled account')
            else:
                return HttpResponse('Invalid login')
    else:
        form = LoginForm()
    return render(request, 'account/login.html', 'form': form)

@login_required
def dashboard(request):
    return render(request,
                  'account/dashboard.html',
                  'section': 'dashboard')

【问题讨论】:

【参考方案1】:

字符串引用在 Django 1.10 中已弃用。

import django.contrib.auth.views

urlpatterns = [
    ...
    url(r'^login/$', django.contrib.auth.views.login, name='login'),
    ...
]

【讨论】:

谢谢,问题解决了 @MaximMikhailovich не за что. Можешь ещё помочь? Я всё сделал, но у меня при переходе 帐户/登录 нет формы для входа, хотя через 注销 выходит И не пойму в чём дело :( Проверяй какой темлейт рендерится и что идет в контекст. Нукак。 Получилось?

以上是关于Python Django |在 include() 的情况下,视图必须是可调用的或列表/元组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python Django |在 include() 的情况下,视图必须是可调用的或列表/元组 [重复]

Python学习---django模板继承180123

python Django 多个视图url出错

python 之 Django框架(路由系统include命名URL和URL反向解析命名空间模式)

如何从 python 代码中调用 django 模板标签?

找不到 Django Python 页面 (404)