TypeError: view must be a callable or a list/tuple in the case of include()

Replace your admin url pattern with this

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

So your urls.py becomes :

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 urls are callable by include (before 1.9).


In 1.10, you can no longer pass import paths to url(), you need to pass the actual view function:

from posts.views import post_home

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

For Django 1.11.2
In the main urls.py write :

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")),
] 

And in the appname/urls.py file write:

from django.conf.urls import url
from . import views

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