Here is something i wanna ask if i try this code i can go to login page but my url look like this http://127.0.0.1:8000/%2Flogin/. What is this %2F?
urlpatterns = [
path("", views.index, name="index"),
path("<str:slug>", views.redirect, name='redirect'),
path('/login/', views.logIn, name='login')]
And i remove slash from login url i get an error message
Page not found (404) Request Method:
GET Request URL:
http://127.0.0.1:8000//login/
after removing slashes here is the code
urlpatterns = [
path("", views.index, name="index"),
path("<str:slug>", views.redirect, name='redirect'),
path('login', views.logIn, name='login')]
So, i wanna know is that why are the slashes affecting the url for login but not <str:slug>
Try this:
urlpatterns = [
path("login/", views.logIn, name='login'),
path("<str:slug>/", views.redirect, name='redirect'),
path("", views.index, name="index")
]
The order of the entries matter and always add a trailing /, unless you have root like views.index
Related
Im trying to implement google authentication but
I got the following error:
django.urls.exceptions.NoReverseMatch: 'social' is not a registered namespace
i have like this in my login.html:
Sign in with Google
I also added this in my setting.py
SOCIAL_AUTH_URL_NAMESPACE = 'social'
url.py
urlpatterns = [
path('admin/', admin.site.urls),
path('register/', user_views.register, name='register'),
path('profile/', user_views.profile, name='profile'),
path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
path('login/', include('allauth.urls')),
path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
path('', include('blog.urls')),
]
Does anyone know how to solve this?
Add the following in urls.py where the url with namespace 'begin' has been defined, before url pattern
app_name = 'social'
Try this:
Sign in with Google
Updated
Please fix the URL mapping conflict as mentioned by #John Gordon:
path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
path('login/', include('allauth.urls')),
You can't have two identical url patterns since Django finds the first one and then doesn't go further down the list if the first is a match. You can name it anything else such as 'accounts', 'users', you get the idea like so:
path('accounts/', include('allauth.urls')),
Do this change then see what you get and report back. Also, please include the settings.py file with your question as a code section rather than a comment.
I am new to django and I want to set my homepage url
My homepage is 127.0.0.1:8000/home but I want my homepage at 127.0.0.1:8000/ or I want my django start as 127.0.0.1:8000/home as default. How do I do it?
Use empty string in url path instead 'home/' for root url
For example:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('app_name.urls'))
]
for urls in your app
urlpatterns = [
path('', views.home, name="home"))
]
I made url for signUp page.
but it returns 404 error.
all of the other urls work well.
I don't know the reason.
main urls
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('mobileWeb.urls')),
path('api/', include('api.urls')),
]
Application urls
urlpatterns = [
path('', views.index, name='index'),
path('index', views.index, name='index'),
path('addComment', views.addComment, name='addComment'),
# users
path('signUp', views.signUp, name='signUp'),
path('accounts/', include('allauth.urls')),
path('martDetail/<int:martId>', views.martDetail, name='martDetail'),
path('trade/<int:itemId>', views.trade, name='trade'),
path('registerMart', views.registerMart, name='registerMart'),
path('registerItem', views.registerItem, name='registerName'),
path('delete', views.delete, name='delete'),
path('deleteMart', views.deleteMart, name='deleteMart'),
path('deleteItem', views.deleteItem, name='deleteItem'),
path('purchaseItem', views.purchaseItem, name='purchaseItem'),
path('selectItem', views.selectItem, name='selectItem'),
path('addStatistics', views.addStatistics, name='addStatistics'),
path('viewStatistics', views.viewStatistics, name='viewStatistics'),
path('imtPosRegister', views.imtPosRegister, name='imtPosRegister'),
path('imtPosRegisterTest', views.imtPosRegisterTest, name='imtPosRegisterTest'),
path('imtPosSaleInfoTest', views.imtPosSaleInfoTest, name='imtPosSaleInfoTest'),
path('imtPosSaleConfirmTest', views.imtPosSaleConfirmTest, name='imtPosSaleConfirmTest'),
path('fsOe9ms1b', views.fsOe9ms1b, name='fsOe9ms1b'),
path('fsOe9ms1b_ma', views.fsOe9ms1b_ma, name='fsOe9ms1b_ma'),
path('ssOe9ms1b', views.ssOe9ms1b, name='ssOe9ms1b'),
path('ssOe9ms1b_ma', views.ssOe9ms1b_ma, name='ssOe9ms1b_ma'),
path('tsOe9ms1b', views.tsOe9ms1b, name='tsOe9ms1b'),
path('tsOe9ms1b_ma', views.tsOe9ms1b_ma, name='tsOe9ms1b_ma'),
path('writeChatting', views.writeChatting, name='writeChatting'),
path('imageUploadChatting', views.imageUploadChatting, name='imageUploadChatting')
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
404 in web browser
404 in console
The url path matching is case-sensitive. In your paths you wrote:
path('signUp', views.signUp, name='signUp'),
with uppercase U in signUp. I would however advise to use only lowercase, and rewrite this to:
path('signup/', views.signUp, name='signUp'),
The same with other paths in your urls.py.
Try visiting http:\127.0.0.1:8000\signUp
How do I make django to redirect from www.example.com to www.example.com/home ?
Below you can see my urlpaterns and I'm using url(r'', RedirectView.as_view(pattern_name='home', permanent=False))to redirect to my /home page but when it detects a link without / at the end it redirects me to the /home page.
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^home/', views.home, name="home"),
url(r'^surukkam/$',views.shrink,name="surukkam"),
url(r'^(?P<inputURL>[0-9a-zA-Z]+)/$',views.retrieve,name="virivu"),
url(r'', RedirectView.as_view(pattern_name='home', permanent=False))
]
it is redirecting because you missed ^$ at the end of home URL.
urlpatterns = [
url(r'^admin/$', admin.site.urls),
url(r'^home/$', views.home, name="home"),
url(r'^surukkam/$',views.shrink,name="surukkam"),
url(r'^(?P<inputURL>[0-9a-zA-Z]+)/$',views.retrieve,name="virivu"),
url(r'^$', RedirectView.as_view(pattern_name='home', permanent=False))
]
^$ - it is a regular expression that specifies the start and end points of a URL string.
whenever your Django detects the empty string it will direct to this URL.
In project/urls.py which is the root urls.py .
urlpatterns = [
url(r'^webadmin/', include('webadmin.urls')), # With templates and plain text for returning.
url(r'^api/', include('restAPI.urls')), # Without templates. Only plain text for returning.
]
In webadmin/urls.py
urlpatterns = [
url(r'^api/login/', views.login, name='login'),
url(r'^api/search/', views.search, name='search'),
url(r'^api/delProject/', views.delProject, name='delProject'),
url(r'^api/addProject/', views.addProject, name='addProject'),
url(r'^api/statistics/', views.statistics, name='statistics'),
url(r'^(?P<action>(users|login|statistics|projects))/', views.index, name='webadmin'),
url(r'^', views.index, name='index'),
]
All the url in restAPI are working correctly.
But in webadmin, all the url are redict to views.index.
For example, when I goto http://example.com/webadmin/api/login/, it will show http://example.com/webadmin/.
If I remove the last line url(r'^', views.index, name='index'), there is nothing changed.
If I use python3 manage.py runserver, it has rigth result.
My uwsgi ini is:
[uwsgi]
chdir=/var/www/project
wsgi-file=/var/www/project/project/wsgi.py
static-map = /static/=/var/www/project/static/
max-requests=5000
daemonize=/var/log/uwsgi/project.log
http = :8000
vacuum = true
master = true
You need to add end of the line anchor $
url(r'^$', views.index, name='index'),