I have created several Django URLs, and most of them are functioning correctly. However, when I try to access the login, logout, or signup pages, I am not being directed to their respective HTML pages. Instead, I am being shown a different page that is not intended for these URLs.
You can see that i have given different html files
from django.contrib import admin
from django.urls import path,include
from django.contrib.auth import views as auth_views
from users import views as users_view
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
path('signup/', users_view.register, name='register'),
path('profile/', users_view.profile, name='profile'),
path('login/', auth_views.LoginView.as_view(template_name="users/login.html"), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
path('contact/', users_view.contact, name='contact'),
path('about/', users_view.about, name='about'),
path('category/', users_view.category, name='category'),
path('search/', users_view.search, name='search'),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
and these codes are from my users views.py
from django.shortcuts import render,redirect
from .forms import usersignupform,userupdateform,userProfileupdate
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages
# Create your views here.
def register (request):
if request.method=='POST':
form = usersignupform(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request,f'Account has been created for {username}')
print(username)
else:
messages.error(request,"Please check all the informations,Then signup")
else:
form = usersignupform()
return render(request,'users/signup.html',{'form':form})
def contact (request):
return render(request,'blog/contact.html')
def about (request):
return render(request,'blog/about.html')
def category (request):
return render(request,'blog/category.html')
def search (request):
return render(request,'blog/search.html')
@login_required()
def profile (request):
if request.method == 'POST':
u_form = userupdateform(request.POST,instance=request.user)
p_form = userProfileupdate(request.POST,request.FILES,instance=request.user.profile)
if u_form.is_valid() and p_form.is_valid():
u_form.save()
p_form.save()
messages.success(request,'Your Profile has been updated')
return redirect('profile')
else:
u_form = userupdateform(instance=request.user)
p_form = userProfileupdate(instance=request.user.profile)
context = {'u_form':u_form,'p_form':p_form}
return render(request,'users/profile.html',context)
These urls is from my blog app:
from django.urls import path
from .views import (PostCreateView,PostListView)
from . import views
urlpatterns = [
path('',PostListView.as_view(),name='home'),
# path('', views.home, name='home'),
path('postcomment/', views.postcomment, name='postcomment'),
path('<str:slug>/', views.blogpost, name='blogpost'),
path('create_blog/', PostCreateView.as_view(), name='createpost'),
]
I have tries everything but nothing works..please help me if you could.
this line in blog.urls catches login, logout ... :
.. path('<str:slug>/'...
something like
path('blog/', include('blog.urls')),
in main urls.py would avoid that.