类型错误:包含另一个视图时,视图必须是可调用的或列表/元组网址.py

2024-09-27 00:16:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经仔细阅读了这个主题的其他几个问题,但是没有一个问题描述include()的情况(包括另一个问题)网址.py文件)。我还查看了1.11文档here,并根据这些文档进行了编码,但是,我不断地收到错误“TypeError:view must be a callable or a list/tuple in the case()for include().”尝试了几乎每一个推导,其他两个答案都没有用。我的错误/误解在哪里?在

在网址.py在

from django.contrib import admin
from django.conf.urls import include, url

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^atfl/', include('atfl.urls'), namespace="atfl"),
]

atfl中的代码/网址.py在

^{pr2}$

atfl中的代码/视图.py在

from django.shortcuts import render_to_response

def index(request):
    return render_to_response('atfl/home.html', {})

def LoadTextFile(request):
    return render_to_response("atfl/people.html", {})

Tags: todjangofrom文档pyimporturlinclude
2条回答

你不应该在atfl中使用字符串/网址.py公司名称:

from django.conf.urls import url
from atfl.views import home, people

urlpatterns = [
    url(r'^$', home, name='home'),
    url(r'^people/$', people, name='people'),
]

错误不是来自include,而是来自网址.py你想要包括的。使用已导入的视图:

from atfl.views import home, people

app_name = 'atfl'

urlpatterns = [
    url(r'^$', home, name='home'),
    url(r'^people/$', people, name='people'),
]

一旦您修复了这个问题,您的include中有一个bug需要修复。命名空间是include的参数,即include('atfl.urls', namespace='atfl')。而是将其作为url()的参数。但是,在这种情况下,您应该从URL模式中完全删除名称空间,并将app_name添加到应用程序的网址.py同上。在

^{pr2}$

最后,不要使用render_to_response。已经过时了。请改用render。在

from django.shortcuts import render_to_response

def index(request):
    return render(request, 'atfl/home.html', {})

相关问题 更多 >

    热门问题