Search code examples
djangodjango-viewsdjango-templatesdjango-urls

Some of my Django urls showing me same html file


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.

These url's are from my main project.

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.


Solution

  • 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.