urlpatterns = [
    # (?P<pk>[0-9]+) => valor en parámetro pk (?P<pk>), que será 1 o más números del 0 al 9

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

    # urls nombradas
    url(r'^blogs/$', BlogsView.as_view(), name='blog_home'),    # listado de blogs, con vista basada en clase BlogsView
    url(r'^$', HomeView.as_view(), name='post_home'),           # listado de posts publicados, con vista basada en clase HomeView
    url(r'^blogs/(?P<username>[a-z]+)/$', UserPostsView.as_view(), name='blog_posts'),     # listado posts blog usuario, basada en la clase UserPostView
    url(r'^blogs/(?P<username>[a-zA-Z]+)/(?P<post_id>[0-9]+)$', DetailView.as_view(), name='post_detail'),   # detalle post, basado en clase DetailView


    url(r'^signup/$', SignupView.as_view(), name='user_signup'), # signup o creación de cuenta de usuario, con vista basada en clase SignupView
    url(r'^login$', LoginView.as_view(), name='user_login'),    # login, con vista basada en clase LoginView
    url(r'^logout$', LogoutView.as_view(), name='user_logout'), # logout, con vista basada en clase LogoutView

    url(r'^new-post/$', CreateView.as_view(), name='post_create'),   # creación nuevo post, con vista basada en clase CreateView


    # Users' API URLs
    url(r'^api/1.0/users/$', UserListAPI.as_view(), name='user_list_api'),      # url con listado de users para la API, basado en clases
    url(r'^api/1.0/users/(?P<pk>[0-9]+)$', UserDetailAPI.as_view(), name='user_detail_api'),     #url detalle usuario para la api

    # Posts' API URLs
    url(r'^api/1.0/blogs/(?P<username>[a-z]+)/$', PostListAPI.as_view(), name='post_list_api'),     # API listado de posts de blog
    url(r'^api/1.0/posts/(?P<pk>[0-9]+)$', PostDetailAPI.as_view(), name='post_detail_api'),     # API detalle de post: CRUD.

    # Blogs' API URLs
    url(r'^api/1.0/blogs/$', BlogListAPI.as_view(), name='blog_list_api')  # API listado blogs
]
    url(r'^new-post$', CreatePostView.as_view(), name='create_post'),
    url(r'^update-post/(?P<pk>[-\w]+)/(?P<idPost>[0-9]+)/$', UpdatePostView.as_view(), name='update_post'),

    # Posts API URLs
    # Listado de posts para la home/Creacion de un post nuevo
    url(r'api/1.0/posts/$', PostListAPI.as_view(), name='post_list_api'),

    #Blogs URLs
    url(r'^blogs/$', BlogsView.as_view(), name='blogs'),
    url(r'^blogs/(?P<pk>[-\w]+)/$', DetailBlogView.as_view(), name='blog_detail'),

    # Blogs API URLs
    # Listado de blogs
    url(r'api/1.0/blogs/$', BlogsListAPI.as_view(), name='blog_list_api'),
    # Detalle de un blog: listado de posts del blog
    url(r'api/1.0/blogs/(?P<pk>[-\w]+)/$', BlogDetailAPI.as_view(), name='blog_detail_api'),
    # Detalle/Actualizacion/Borrado de un post
    url(r'api/1.0/blogs/(?P<pk>[-\w]+)/(?P<idPost>[0-9]+)/$', PostDetailAPI.as_view(), name='blog_detail_api'),

    #Users URLs
    url(r'^login', LoginView.as_view(), name='users_login'),
    url(r'^logout', LogoutView.as_view(), name='users_logout'),
    url(r'^signup', SignupView.as_view(), name='users_signup'),

    # Users API URLs
    #Listar usuarios/Crear un nuevo usuario
    url(r'api/1.0/users/$', UserListAPI.as_view(), name='user_list_api'),
    # Detalle/Actualizacion/Borrado de un usuario
    url(r'api/1.0/users/(?P<pk>[0-9]+)$', UserDetailAPI.as_view(), name='user_detail_api')
]
from users.views import login, logout, SignUpFormView

urlpatterns = [
    path('admin/', admin.site.urls),

    # Users
    path('login', login, name='login'),
    path('logout', logout, name='logout'),
    path('signup', SignUpFormView.as_view(), name='signup'),

    # posts
    path('blogs/<str:name>/<int:pk>/', post_detail, name='post_detail'),
    path('blogs/<str:name>/', UserPostsView.as_view(), name='blog_user'),
    path('all_posts', PostsListView.as_view(), name='post_list'),
    path('post/new/', new_post, name='new_post'),

    # blogs
    path('blogs', BlogsListView.as_view(), name='blogs'),

    # home
    path('', LatestPostsView.as_view(), name='home'),

    # API
    path('api/posts/<int:pk>', PostDetailAPI.as_view(),
         name='post_detail_api'),
    path('api/posts/<str:name>', PostsAPI.as_view(), name='posts_api'),
    path('api/users/<int:pk>', UserDetailAPI.as_view(),
         name='user_detail_api'),
    path('api/users', UserAPI.as_view(), name='posts_api')
]
    # API END POINT'S

    # END POINT'S USUARIOS:
    # End Point para el REGISTRO de Usuarios.
    path('api/1.0/new-user', UserAddAPI.as_view(), name='api_user_add'),

    # End point para el DETALLE, la ACTUALIZACION y el BORRADO de un Usuario
    path('api/1.0/users/<int:pk>',
         UserDetailAPI.as_view(),
         name='api_user_detail'),

    # END POINT'S BLOGS
    # End Point que devuelve un LISTADO con los Blogs de la plataforma
    path('api/1.0/blogs', UserListAPI.as_view(), name='api_blogs_list'),

    # END POINT'S POSTS
    # End Point que permite la CREACIÓN de un NUEVO POST.
    path('api/1.0/new-post', PostAddAPI.as_view(), name='api_post_add'),

    # End Point que permite LISTAR los POST de un BLOG.
    path('api/1.0/blogs/<str:username>',
         PostListAPI.as_view(),
         name='api_post_list'),

    # End Point para el DETALLE, la ACTUALIZACION y el BORRADO de un POST.
    path('api/1.0/posts/<int:pk>',
         PostDetailAPI.as_view(),
         name='api_post_detail')
]
from posts.api import PostListAPI, PostDetailAPI
from posts.views import PostDetail, PostCreationView
from django.conf.urls import url

urlpatterns = [
    # web urls
    url(r'^posts/(?P<pk>[0-9]+)$', PostDetail.as_view(), name='post_detail'),
    url(r'^newpost$', PostCreationView.as_view()),

    # api urls
    url(r'^api/1.0/posts/$', PostListAPI.as_view(), name='api_post_list'),
    url(r'^api/1.0/posts/(?P<pk>[0-9]+)$', PostDetailAPI.as_view(), name='api_post_list'),
]