router.register(r'category', CategoryViewSet, basename='api-category') app_name = 'blog' urlpatterns = [ # path('', post_list, name='index'), path('', IndexView.as_view(), name='index'), path('category/<int:category_id>/', CategoryView.as_view(), name='category-list'), path('tag/<int:tag_id>/', TagView.as_view(), name='tag-list'), # path('post/<int:post_id>.html', post_detail, name='post-detail'), path('post/<int:post_id>.html', PostDetailView.as_view(), name='post-detail'), path('search/', SearchView.as_view(), name='search'), path('author/<int:owner_id>/', AuthorView.as_view(), name='author'), path('links/', LinkListView.as_view(), name='links'), path('comment/', CommentView.as_view(), name='comment'), path('super_admin/', admin.site.urls, name='super-admin'), path('admin/', custom_site.urls, name='admin'), path('xadmin/', xadmin.site.urls, name='admin'), path('ckeditor/', include('ckeditor_uploader.urls')), path('category-autocomplete/', CategoryAutocomplete.as_view(), name='category-autocomplete'), path('tag-autocomplete/', TagsAutocomplete.as_view(), name='tag-autocomplete'), # path('api/post/', post_list, name='post-list'), # path('api/post/', PostList.as_view(), name='post-list'), path('api/', include((router.urls, 'blog'), namespace="api")),
router.register(r'category', CategoryViewSet, basename='api-category') urlpatterns = [ # re_path(r'^$', post_list, name='index'), # re_path(r'^category/(?P<category_id>\d+)/$', post_list, name='category-list'), # re_path(r'^tag/(?P<tag_id>\d+)/$', post_list, name='tag-list'), # re_path(r'^post/(?P<post_id>\d+).html$', post_detail, name='post-detail'), # re_path(r'^links/$', links, name='links'), # path('super_admin/', admin.site.urls, name='super-admin'), # path('admin/', custom_site.urls, name='admin'), re_path(r'^$', IndexView.as_view(), name='index'), re_path(r'^category/(?P<category_id>\d+)/$', CategoryView.as_view(), name='category-list'), re_path(r'^tag/(?P<tag_id>\d+)/$', TagView.as_view(), name='tag-list'), re_path(r'^post/(?P<post_id>\d+).html$', PostDetailView.as_view(), name='post-detail'), re_path(r'^search/$', SearchView.as_view(), name='search'), re_path(r'^author/(?P<owner_id>\d+)/$', AuthorView.as_view(), name="author"), re_path(r'^links/$', LinkListView.as_view(), name='links'), re_path(r'^comment/$', CommentView.as_view(), name='comment'), re_path(r'^rss|feed/$', LatestPostFeed(), name='rss'), re_path(r'^sitemap\.xml$', sitemap_views.sitemap, {'sitemaps': {'posts': PostSitemap}}), re_path(r'^category-autocomplete/$', CategoryAutocomplete.as_view(), name='category-autocomplete'), re_path(r'^tag-autocomplete/$', TagAutocomplete.as_view(), name='tag-autocomplete'), re_path(r'^api/', include(router.urls)), re_path(r'^api/docs/', include_docs_urls(title='typeidea apis')), path('super_admin/', admin.site.urls, name='super-admin'), path('admin/', custom_site.urls, name='admin'), ]
from blog.views import post_list, post_detail, CategoryView, TagView, PostDetailView, IndexView, SearchView, AuthorView from comment.views import CommentView from config.views import LinkListView from .custom_site import custom_site from blog.sitemap import PostSitemap urlpatterns = [ re_path('^$', IndexView.as_view(), name='index'), re_path('^category/(?P<category_id>\d+)/$', CategoryView.as_view(), name='category-list'), re_path('^tag/(?P<tag_id>\d+)/$', TagView.as_view(), name='tag-list'), re_path('^post/(?P<post_id>\d+).html$', PostDetailView.as_view(), name='post-detail'), #re_path('^links/$', links, name='links'), re_path('^links/$', LinkListView.as_view, name='links'), re_path('^super_admin/', admin.site.urls, name='super-admin'), re_path('^admin/', custom_site.urls, name='admin'), re_path('^search/$', SearchView.as_view(), name='search'), re_path('^author/(?P<owner_id>\d+)/$', AuthorView.as_view(), name='author'), re_path('^comment/$', CommentView.as_view(), name='comment'), re_path('^sitemap\.xml$', sitemap_views.sitemap, {'sitemaps': { 'post': PostSitemap }}), re_path('^ckeditor/', include('ckeditor_uploader.urls')), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
xversion.register_models() router = routers.DefaultRouter() router.register(r'post', PostViewSet) router.register(r'category', CategoryViewSet) router.register(r'tag', TagViewSet) router.register(r'user', UserViewSet) urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), url(r'^category/(?P<category_id>\d+)/$', CategoryView.as_view(), name='category'), url(r'^tag/(?P<tag_id>\d+)/$', TagView.as_view(), name='tag'), url(r'^post/(?P<pk>\d+)/$', PostView.as_view(), name='detail'), url(r'^author/(?P<author_id>\d+)/$', AuthorView.as_view(), name='author'), url(r'^links/$', LinkView.as_view(), name='links'), url(r'^comment/$', CommentView.as_view(), name='comment'), url(r'^admin/', xadmin.site.urls), url(r'^category-autocomplete/$', CategoryAutocomplete.as_view(), name='category-autocomplete'), url(r'^tag-autocomplete/$', TagAutocomplete.as_view(), name='tag-autocomplete'), url(r'^api/', include(router.urls)), url(r'^api/docs/', include_docs_urls(title='Typeidea apis')), ] if settings.DEBUG: import debug_toolbar
SearchView, AuthorView) router = DefaultRouter() router.register(r'post', PostViewSet, base_name='api-post') router.register(r'category', CategoryViewSet, base_name='api-category') urlpatterns = [ path(r'', IndexView.as_view(), name='index'), re_path(r'^category/(?P<category_id>\d+)/$', CategoryView.as_view(), name='category-list'), re_path(r'^tag/(?P<tag_id>\d+)/$', TagView.as_view(), name='tag-list'), re_path(r'^search/$', SearchView.as_view(), name='search'), re_path(r'^comment/$', CommentView.as_view(), name='comment'), re_path( r'^author/(?P<owner_id>\d+)/$', AuthorView.as_view(), name='author'), re_path(r'^post/(?P<post_id>\d+).html$', PostDetailView.as_view(), name='post-detail'), re_path(r'^links/$', LinkListView.as_view(), name='links'), re_path(r'^admin/', xadmin.site.urls, name='xadmin'), # 管理用户 # 配置RSS和SITEMAP的路由 re_path(r'^rss|feed/', LatestPostFeed(), name='rss'), # re_path(r'^sitemap\.xml$', sitemap_views.sitemap, {'sitemaps': {'posts': PostSitemap}}), re_path( r'^sitemap\.xml$', cache_page(60 * 20, key_prefix='sitemap_cache_')( sitemap_views.sitemap), {'sitemaps': { 'posts': PostSitemap }}), # 将sitemap进行缓存
from django.contrib.sitemaps import views as sitemap_views from blog.rss import LatestPostFeed from blog.sitemap import PostSitemap import xadmin from .autocomplete import CategoryAutocomplete,TagAutocomplete from django.conf.urls.static import static from django.conf import settings urlpatterns = [ path('', IndexView.as_view(), name="index"), path('category/<category_id>/', CategoryView.as_view(), name="category"), path('tag/<tag_id>/', TagView.as_view(), name="tag"), path('post/<post_id>/', PostDetailView.as_view(), name="post"), path('link/', link, name="link"), path('search/',SearchView.as_view(),name='search'), path('author/<author_id>/',AuthorView.as_view(),name='author'), path('links/',LinkView.as_view(),name='link'), path('comment/',CommentView.as_view(),name='comment'), path('category-autocomplete/',CategoryAutocomplete.as_view(),name='category-autocomplete'), path('tag-autocomplete/',TagAutocomplete.as_view(),name='tag-autocomplete'), path('ckeditor/',include('ckeditor_uploader.urls')), path(r'rss|feed/',LatestPostFeed(),name='rss'), path(r'sitemap.xml',sitemap_views.sitemap,{'sitemaps':{'posts':PostSitemap}}), path('admin/',xadmin.site.urls,name='xadmin'), # path('superadmin/',admin.site.urls), # path('admin/', custom_site.urls), ]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
router.register(r'post', PostViewSet, base_name='api-post') router.register(r'category', CategoryViewSet, base_name='api=category') urlpatterns = [ # path('', post_list, name='index'), # path('category/<category_id>', post_list, name='category-list'), # path('tag/<tag_id>', post_list, name='tag-list'), # path('post/<post_id>.html', post_detail, name='post-detail'), path('', IndexView.as_view(), name='index'), path('category/<category_id>', CategoryView.as_view(), name='category-list'), path('tag/<tag_id>', TagView.as_view(), name='tag-list'), path('post/<post_id>.html', PostDetailView.as_view(), name='post-detail'), path('search/', SearchView.as_view(), name='search'), path('author/<owner_id>', AuthorView.as_view(), name='author'), path('links/', LinkView.as_view(), name='links'), path('comment/', CommentView.as_view(), name='comment'), path('rss/', LatestPostFeed(), name='rss'), path('sitemap.xml', sitemap_views.sitemap, {'sitemaps': { 'posts': PostSitemap }}), path('category-autocomplete/', CategoryAutocomplete.as_view(), name='category-autocomplete'), path('tag-autocomplete/', TagAutocomplete.as_view(), name='tag-autocomplete'), path('ckeditor/', include('ckeditor_uploader.urls')), # path('api/post/', PostList.as_view(), name='post-list'),
router.register(r'posts', PostViewSet) router.register(r'cats', CategoryViewSet) router.register(r'tags', TagViewSet) router.register(r'users', UserViewSet) #def static(prefix, view=serve, **kwargs): # return [path(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs)] urlpatterns = [ path('', cache_page(60)(IndexView.as_view()), name="index"), path('category/<str:category_name>/', CategoryView.as_view(), name='category'), path('tag/<int:tag_id>/', TagView.as_view(), name='tag'), path('post/<slug:slug>/', PostView.as_view(), name='detail'), path('author/<str:author_username>/', AuthorView.as_view(), name='author'), path('links/', LinkView.as_view(), name='links'), path('admin/', admin.site.urls), path('comment/', CommentView.as_view(), name="Comment"), path('ckeditor/', include('ckeditor_uploader.urls')), path('api/', include(router.urls)), path('api/docs/', documentation.include_docs_urls(title='blogsys apis')), ] + static(settings.MEDIA_URL, serve, document_root=settings.MEDIA_ROOT) + static( settings.STATIC_URL, serve, document_root=settings.STATIC_ROOT) #if settings.DEBUG: # #import debug_toolbar # urlpatterns += [ # url(r'^__debug__/', include(debug_toolbar.urls)), ## url(r'^silk/', include('silk.urls', namespace='silk')),
from blog.apis import PostViewSet, CategoryViewSet, TagViewSet router = DefaultRouter() # 这里的basename就类似于名称空间,即url reverse的前缀。 router.register(r'post', PostViewSet, basename="api-post") router.register(r'category', CategoryViewSet, basename="api-category") router.register(r'tag', TagViewSet, basename="api-tag") urlpatterns = [ url(r'^$', IndexView.as_view(), name="post_list"), url(r'^category/(?P<category_id>\d+)/$', CategoryView.as_view(), name="post_list_by_category"), url(r'^tag/(?P<tag_id>\d+)/$', TagView.as_view(), name="post_list_by_tag"), url(r'^author/(?P<author_id>\d+)/$', AuthorView.as_view(), name="post_list_by_author"), url(r'^post/(?P<post_id>\d+).html/$', PostDetailView.as_view(), name="post_detail"), url(r'^keyword/$', SearchView.as_view(), name="search"), url(r'^links/$', LinkView.as_view(), name="links"), url(r'^comment/$', CommentView.as_view(), name="comment"), url(r'^category_autocomplete/$', CategoryAutocomplete.as_view(), name="category_autocomplete"), url(r'^tag_autocomplete/$', TagAutocomplete.as_view(), name="tag_autocomplete"), url(r'^ckeditor/', include('ckeditor_uploader.urls')), # ckeditor保存和浏览上传的图片的两个接口
from blog.views import BlogListView, BlogPostView, BlogPostEditView, BlogListUnpublishedView, BlogPostCreateView, \ BlogPostPublishView, BlogPostUnpublishView, AuthorView, AuthorUnpublishedView, AuthorPostsView, \ BlogPostToPersonalView, BlogPostToCompanyView, AuthorListView, BlogFeedView from django.conf.urls import url urlpatterns = [ url(r'^$', BlogListView.as_view(), name="blog_article_list"), url(r'^feed$', BlogFeedView.as_view(), name="blog_feed"), url(r'^unpublished$', BlogListUnpublishedView.as_view(), name="blog_unpublished_article_list"), url(r'^post/(?P<slug>[^\/]*)$', BlogPostView.as_view(), name="blog_post"), url(r'^write$', BlogPostCreateView.as_view(), name="blog_create_post"), url(r'^post/(?P<pk>\d+)/edit$', BlogPostEditView.as_view(), name="blog_post_editor"), url(r'^post/(?P<pk>\d+)/publish$', BlogPostPublishView.as_view(), name="blog_post_publish"), url(r'^post/(?P<pk>\d+)/unpublish$', BlogPostUnpublishView.as_view(), name="blog_post_unpublish"), url(r'^post/(?P<pk>\d+)/to_personal$', BlogPostToPersonalView.as_view(), name="blog_post_to_personal"), url(r'^post/(?P<pk>\d+)/to_company$', BlogPostToCompanyView.as_view(), name="blog_post_to_company"), url(r'^authors/$', AuthorListView.as_view(), name="author_list"), url(r'^author/(?P<username>[^\/]*)$', AuthorView.as_view(), name="author"), url(r'^author/(?P<username>[^\/]*)/posts$', AuthorPostsView.as_view(), name="author_posts"), url(r'^author/(?P<username>[^\/]*)/posts/unpublished$', AuthorUnpublishedView.as_view(), name="author_unpublished_posts"), url(r'^author/(?P<username>[^\/]*)/posts/personal$', AuthorPostsView.as_view(personal=True), name="author_personal_posts"), url(r'^author/(?P<username>[^\/]*)/posts/personal/unpublished$', AuthorUnpublishedView.as_view(personal=True), name="author_personal_unpublished_posts"), ]
routers.register('category', CategoryViewSet, basename='api-category') routers.register('tag', TagViewSet, basename='api-tag') urlpatterns = [ path('', IndexView.as_view(), name="index"), path('myposts/', MyPostsView.as_view(), name="my_posts"), path('post/<int:post_id>.html', PostDetailView.as_view(), name="post_detail"), path('category/<int:category_id>', CategoryView.as_view(), name="category_list"), path('tag/<int:tag_id>', TagView.as_view(), name="tag_list"), path('links/', LinkListView.as_view(), name="links"), path('search/<int:type_id>', SearchView.as_view(), name='search'), path('author/<int:author_id>', AuthorView.as_view(), name='author'), path('comment/', CommentView.as_view(), name='comment'), path('ckeditor/', include('ckeditor_uploader.urls')), path('rss/', LatestPostFeed(), name='rss'), path('sitemap.xml/', sitemap_views.sitemap, {'sitemaps': { 'posts': PostSitemap }}, name='sitemap'), path('super_admin/', admin.site.urls, name="super_admin"), path('admin/', custom_site.urls, name="admin"), path('api/', include((routers.urls, 'blog'), namespace='api')), path('api/docs/', include_docs_urls(title='API document')), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import url from django.contrib import admin from .custom_site import custom_site from blog.views import (IndexView, CategoryView, TagView, PostDetailView, SearchView, AuthorView) from config.views import LinksView urlpatterns = [ url(r'^admin/', custom_site.urls, name='admin'), url(r'^super_admin/', admin.site.urls, name='super-admin'), url(r"^$", IndexView.as_view(), name='index'), url(r"^category/(?P<category_id>\d+)/$", CategoryView.as_view(), name='category-list'), url(r"^tag/(?P<tag_id>\d+)/$", TagView.as_view(), name='tag-list'), url(r"^post/(?P<post_id>\d+).html$", PostDetailView.as_view(), name='post-detail'), # url(r"^links/$", links, name='links'), url(r"^search/$", SearchView.as_view(), name='search'), url(r"^author/(?P<owner_id>\d+$)", AuthorView.as_view(), name="author"), url(r"^links/$", LinksView.as_view(), name="links") ]
router.register(r'post', PostViewSet, base_name='api-post') router.register(r'category', CategoryViewSet, base_name='api-category') urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), # 首页 url(r'^category/(?P<category_id>\d+)/$', CategoryView.as_view(), name='category-list'), # 分类列表页 url(r'^tag/(?P<tag_id>\d+)/$', TagView.as_view(), name='tag-list'), # tag列表页 url(r'post/(?P<post_id>\d+).html$', PostDetailView.as_view(), name='post-detail'), # 文章详情页 url(r'^links/$', LinkListView.as_view(), name='links'), # 友链页 url(r'^search/$', SearchView.as_view(), name='search'), # 搜索页 url(r'^author/(?P<owner_id>\d+)/$', AuthorView.as_view(), name='author'), # 作者页面 url(r'^comment/$', CommentView.as_view(), name='comment'), # 评论提交 url(r'^rss|feed/', LatestPostFeed(), name='rss'), # RSS订阅 url( r'^sitemap\.xml$', cache_page(60 * 20, key_prefix='sitemap_cache_')( sitemap_views.sitemap), {'sitemaps': { 'posts': PostSitemap }}), # sitemap,用于搜索引擎的收录, cache_page缓存sitemap url(r'^category-autocomplete/$', CategoryAutocomplete.as_view(), name='category-autocomplete'), # 分类自动补全 url(r'^tag-autocomplete/$', TagAutocomplete.as_view(), name='tag-autocomplete'), # 标签自动补全
path('tag/<int:tag_id>/', TagView.as_view(), name='post_list_from_tag_id_cbv'), # django rest framework path #path('api/post/', post_list, name='post-list'), #path('api/post/', PostList.as_view(), name='post-list'), path('api/', include((router.urls, BlogConfig.name), namespace="api")), path('api/docs/', include_docs_urls(title='typeidea apis')), #url(r'^post/(?P<post_id>\d+).html&', post_detail), #path('post/<int:post_id>/', post_detail, name='post_detail_from_post_id'), path('post/<int:post_id>/', PostDetailView.as_view(), name='post_detail_from_post_id_cbv'), path('search/', SearchView.as_view(), name='search_results'), path('author/<int:owner_id>/', AuthorView.as_view(), name='post_list_from_author_id_cbv'), #url(r'^links/$', links), #path('links/', links, name='links'), path('links/', LinkListView.as_view(), name='links'), path('comment/', CommentView.as_view(), name='comment'), path('rss/', LatestPostFeed(), name='rss'), #path('sitemap.xml', sitemap_views.sitemap, {'sitemaps': {'posts': PostSitemap}}), path('sitemap.xml', cache_page(60*1, key_prefix='sitemap_cache_')(sitemap_views.sitemap), {'sitemaps':{'posts': PostSitemap}}), path('super_admin/', admin.site.urls, name='super_admin'), # used for super admin path('admin/', custom_admin_site.urls, name='normal_admin'), # used for normal admin ]
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import url from django.contrib import admin from .custom_site import custom_site from blog.views import IndexView, CategoryView, TagView, PostDetailView, SearchView, AuthorView from config.views import LinkListView urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), url(r'^category/(?P<category_id>\d+)/$', CategoryView.as_view(), name='category-list'), url(r'tag/?(?P<tag_id>\d+)/$', TagView.as_view(), name='tag-list'), url(r'^post/(?P<pk>\d+).html$', PostDetailView.as_view(), name='post-detail'), url(r'links/$', LinkListView.as_view(), name='links'), url(r'^super_admin/', admin.site.urls, name='super-admin'), url(r'^admin/', custom_site.urls, name='admin'), url(r'^search/$', SearchView.as_view(), name='search'), url(r'^author/?P<owner_id>\d+/$', AuthorView.as_view(), name='author') ]
Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin from django.urls import path, re_path from blog.views import (IndexView, CategoryView, TagView, PostDetailView, SearchView, AuthorView) from comment.views import CommentView from config.views import links, LinkListView from typeidea.custom_site import custom_site urlpatterns = [ path('', IndexView.as_view(), name='index'), path('detail/', PostDetailView.as_view(), name='post-detail'), re_path('post/(?P<post_id>\d+).html', PostDetailView.as_view(), name='post-detail'), re_path('tag/(?P<tag_id>\d+)', TagView.as_view(), name='tag-list'), re_path('category/(?P<category_id>\d+)', CategoryView.as_view(), name='category-list'), path('links/', LinkListView.as_view(), name='links'), path('search/', SearchView.as_view(), name='search'), path('comment/', CommentView.as_view(), name='comment'), re_path('author/(?P<owner_id>\d+)/', AuthorView.as_view(), name='author'), path('super_admin/', admin.site.urls, name='super-admin'), path('admin/', custom_site.urls, name='admin'), ]
1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ import xadmin from django.contrib import admin from django.urls import path from django.conf.urls import url, include from django.conf import settings from django.conf.urls.static import static from blog.views import IndexView, CategoryView, TagView, PostDetailView, SearchView, AuthorView from config.views import LinkListView from comment.views import CommentView from .custom_site import custom_site from .autocomplete import CategoryAutoComplete, TagAutoComplete urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), url(r'^search/$', SearchView.as_view(), name='search'), url(r'^category/(?P<category_id>\d+)/$', CategoryView.as_view(), name='category-list'), url(r'^tag/(?P<tag_id>\d+)/$', TagView.as_view(), name='tag-list'), url(r'^post/(?P<post_id>\d+).html$', PostDetailView.as_view(), name='post-detail'), url(r'^author/(?P<owner_id>\d+).html$', AuthorView.as_view(), name='author'), url(r'^links/$', LinkListView.as_view(), name='links'), url(r'^comment/$', CommentView.as_view(), name='comment'), url(r'^super_admin/', admin.site.urls, name='super-admin'), # url(r'^admin/', custom_site.urls, name='admin'), url(r'^admin/', xadmin.site.urls, name='xadmin'), url(r'^category-autocomplete/$', CategoryAutoComplete.as_view(), name='category-autocomplete'), url(r'^tag-autocomplete/$', TagAutoComplete.as_view(), name='tag-autocomplete'), url(r'^ckeditor/', include('ckeditor_uploader.urls')), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
from datetime import datetime from django.conf.urls import url from blog.models import BlogEntry, Blog from blog.views import BlogEntryList, BlogEntryDetail, AuthorView, BlogMonthArchive, BlogYearArchive urlpatterns = [ url(r'^$', BlogEntryList.as_view(), name='blogentry-list'), url(r'^(?P<year>\d{4})/(?P<month>\d+)/(?P<slug>[-\w]+)/$', BlogEntryDetail.as_view(), name='blogentry-detail'), url(r'^author/(?P<username>[\w.@+-]+)/$', AuthorView.as_view(), name='author-detail'), url(r'^(?P<year>[0-9]{4})/$', BlogYearArchive.as_view(), name="article_year_archive"), url(r'^(?P<year>[0-9]{4})/(?P<month>[0-9]+)/$', BlogMonthArchive.as_view(month_format='%m'), name="archive_month_numeric"), ]