web-dev-qa-db-ja.com

TypeError:include()の場合、ビューは呼び出し可能またはリスト/タプルでなければなりません

私はDjango and python。に初めています。ビューへのURLマッピング中に、次のエラーが表示されます。

よしpyコード:-

from Django.conf.urls import url
from Django.contrib import admin


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^posts/$', "posts.views.post_home"), #posts is module and post_home 
]                                              # is a function in view. 

views.pyコード:-

from Django.shortcuts import render
from Django.http import HttpResponse
# Create your views here.
#function based views

def post_home(request):
    response = "<h1>Success</h1>"
    return HttpResponse(response)

トレースバック

enter image description here

11
M Pabari

1.10では、インポートパスをurl()に渡すことができなくなったため、実際のビュー関数を渡す必要があります。

from posts.views import post_home

urlpatterns = [
    ...
    url(r'^posts/$', post_home),
]        
26
knbk

管理者のURLパターンをこれに置き換えます

url(r'^admin/', include(admin.site.urls))

したがって、urls.pyは次のようになります。

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


urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^posts/$', "posts.views.post_home"), #posts is module and post_home 
] 

admin urlはinclude(1.9より前)で呼び出し可能です。

2
kapilsdv

Django 1.11.2
メインのurls.pyに以下を記述します。

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

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

また、appname/urls.pyファイルに次のように記述します。

from Django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$',views.post_home),
]
1
cz game

@knbkからの答えを補完するために、以下のテンプレートを使用できます。

1.9の場合と同様

from Django.conf.urls import url, include

urlpatterns = [
    url(r'^admin/', admin.site.urls), #it's not allowed to use the include() in the admin.urls
    url(r'^posts/$', include(posts.views.post_home), 
] 

1.10にあるように:

from your_project_Django.your_app_Django.view import name_of_your_view

urlpatterns = [
    ...
    url(r'^name_of_the_view/$', name_of_the_view),
]

Your_app_Django >> views.pyでビューをレンダリングする関数を作成することを忘れないでください。

0
Alex Zwir

答えはproject-dir/urls.pyにあります

別のURLconfを含める
 1. include()関数をインポートします。Django.conf.urlsからurlをインポートし、include 
します。 blog/'、include(' blog.urls '))
0
ashish2py

実際のビュー関数を渡す必要があります

posts.views import post_homeから

urlpatterns = [... url(r '^ posts/$'、post_home)、]

これはうまくいきます! RL Dispatcher Django およびここ Common Reguler Expressions Django URLs で読むことができます

0
Lavish Saluja