When used with flatpages reverse()
and get_abolute_url()
returns different outputs:
>>> about = FlatPage.objects.get(id=2)
>>>
>>> about
<FlatPage: /about-us/ -- About us page>
>>>
>>> about.url
>>> '/about-us/'
>>>
>>> about.get_absolute_url()
'/about-us/'
>>>
>>>
>>> reverse('django.contrib.flatpages.views.flatpage', args=[about.url])
'/%2Fabout-us/' ## from where %2F comes from ?
>>>
Here is the sitewide urls.py
:
from django.conf.urls import url, include
from django.contrib import admin
from django.contrib .flatpages import urls as flatpage_urls
# from . import blog
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'', include(flatpage_urls)),
]
Although, I am able to access to about page at http://127.0.0.1:8000/about-us/
. From where does %2F
come from ?
I was expecting both method should return same output. What's going on here ?
Update:
Here is flatpages/urls.py
from django.conf.urls import url
from django.contrib.flatpages import views
urlpatterns = [
url(r'^(?P<url>.*)$', views.flatpage, name='django.contrib.flatpages.views.flatpage'),
]
Update 2:
Updated urls.py to:
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
# url(r'', include(flatpage_urls)),
]
urlpatterns += [
url(r'^(?P<url>.*/)$', views.flatpage),
]