消息关闭
    暂无新消息!

TypeError: view must be a callable

问题作者 : 飞跃2017-07-28发布
建了工程demo
建了APP,firstdemo
views:
def hello(request):
    return HttpResponse('<h1>Hello Django!!!!</h1>')

url:
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$','demo.firstdemo.views.hello'), 
]

我的django版本是1.1.13?运行出错,TypeError: view must be a callable or a list/tuple in the case of include().

说是新版本不支持url的写法了。可是我怎么改都出错。新手没办法,求大神指导!

4个回答

︿ 3
第二个方法
先修改 Demo/Demo/urls.py 


from django.conf.urls import url, include
from django.contrib import admin
 
urlpatterns = [
    url(r'^', include('firstdemo.urls')),
    url(r'^admin/', admin.site.urls),
]



用include()的时候正则表达式 要少加一个 “$” 不然会有警告,但不影响功能。
 
这样就可以了。
︿ 0
按你的说法应该你的项目和应用的目录结构是这样的

Demo--Demo
           |_firstdemo

你首先确保 Demoe/Demo/settints.py 


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'firstdemo',
]


你要想直接把firstdemo的view用在URL根目录 / 的话

第一个方法:
修改 Deme/Demo/urls.py


from django.conf.urls import url
from django.contrib import admin
from firstdemo.views import hello

urlpatterns = [
    url(r'^$', hello, name='hello'),
    url(r'^admin/', admin.site.urls),
]


这样就可以了。

第二个方法
先修改 Demo/Demo/urls.py 


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

urlpatterns = [
    url(r'^$', include('firstdemo.urls')),
    url(r'^admin/', admin.site.urls),
]


再(新建)修改 Demo/firstdemo/urls.py


from django.conf.urls import *
from firstdemo.views import hello

urlpatterns = [
    url(r'^$', hello, name='hello'),
    ]
︿ 0
你修改一下
firstdemo目录下的 urls.py

用下面的方式


from .views import hello

urlpatterns = [
    url(r'^$', hello, name='hello'),
    url(r'^admin/', admin.site.urls)
]