Good day, In the project urlpatterns it's meant to be ""(two quotation marks) instead of "(one). Also, in the app you have not configured any path to handle the http://127.0.0.1:8000/. What you have is for the other views like signup and all. You need a base one like path("", ... Adjust that and see if it works.
On Monday, July 24, 2023 at 6:12:33 AM UTC+1 AKHIL KORE wrote: > Page not found (404) > Request Method: GET > Request URL: http://127.0.0.1:8000/ > Using the URLconf defined in question_post.urls, Django tried these URL > patterns, in this order: > > 1.admin/ > 2.signup/ [name='signup'] > 3.login/ [name='login'] > 4.logout/ [name='logout'] > 5.post_question/ [name='post_question'] > 6.question_list/ [name='question_list'] > 7.question/<int:question_id>/ [name='question_detail'] > 8.question/<int:question_id>/post_answer/ [name='post_answer'] > 9.answer/<int:answer_id>/like/ [name='like_answer'] > 10.question_detail/<int:question_id>/ [name='question_detail'] > The empty path didn’t match any of these. > > Below are my django project files. > models.py > --------- > from django.db import models > from django.contrib.auth.models import User > > class UserProfile(models.Model): > user = models.OneToOneField(User, on_delete=models.CASCADE) > # Remove the username field from here, as it belongs to the User model. > first_name = models.CharField(max_length=100, blank=True, null=True) > last_name = models.CharField(max_length=100, blank=True, null=True) > email = models.EmailField(blank=True, null=True) > profile_picture = models.ImageField( > upload_to='profile_pics/', blank=True, null=True) > > def __str__(self): > return self.user.username > > class Question(models.Model): > user = models.ForeignKey(UserProfile, on_delete=models.CASCADE) > text = models.TextField() > created_at = models.DateTimeField(auto_now_add=True) > > class Answer(models.Model): > user = models.ForeignKey(UserProfile, on_delete=models.CASCADE) > question = models.ForeignKey(Question, on_delete=models.CASCADE) > text = models.TextField() > created_at = models.DateTimeField(auto_now_add=True) > > class Like(models.Model): > user = models.ForeignKey(UserProfile, on_delete=models.CASCADE) > answer = models.ForeignKey(Answer, on_delete=models.CASCADE) > > views.py > -------- > from django.shortcuts import render, redirect > from django.contrib.auth.mixins import LoginRequiredMixin > from django.views import View > from django.urls import reverse_lazy > from django.contrib.auth.forms import UserCreationForm, AuthenticationForm > from .models import Question, Answer, Like, UserProfile > from .forms import QuestionForm, AnswerForm, LikeForm, > CustomUserCreationForm > > class SignupView(View): > def get(self, request): > form = UserCreationForm() > return render(request, 'signup.html', {'form': form}) > > def post(self, request): > form = UserCreationForm(request.POST) > if form.is_valid(): > form.save() > return redirect('login') > return render(request, 'signup.html', {'form': form}) > > class UserLoginView(View): > def get(self, request): > form = AuthenticationForm() > return render(request, 'login.html', {'form': form}) > > def post(self, request): > form = AuthenticationForm(request, data=request.POST) > if form.is_valid(): > username = form.cleaned_data.get('username') > password = form.cleaned_data.get('password') > user = authenticate(username=username, password=password) > if user is not None: > login(request, user) > # Redirect to the home page on successful login > return redirect('home') > return render(request, 'login.html', {'form': form}) > > class UserLogoutView(View): > def get(self, request): > logout(request) > return redirect('login') > > class QuestionPostView(LoginRequiredMixin, View): > login_url = reverse_lazy('login') > > def get(self, request): > form = QuestionForm() > return render(request, 'post_question.html', {'form': form}) > > def post(self, request): > form = QuestionForm(request.POST) > if form.is_valid(): > new_question = form.save(commit=False) > new_question.user = request.user > new_question.save() > return redirect('question_list') > return render(request, 'post_question.html', {'form': form}) > > class QuestionListView(View): > def get(self, request): > questions = Question.objects.all() > return render(request, 'question_list.html', {'questions': > questions}) > > class AnswerPostView(LoginRequiredMixin, View): > login_url = reverse_lazy('login') > > def get(self, request, question_id): > question = Question.objects.get(pk=question_id) > form = AnswerForm() > return render(request, 'post_answer.html', {'question': question, > 'form': form}) > > def post(self, request, question_id): > question = Question.objects.get(pk=question_id) > form = AnswerForm(request.POST) > if form.is_valid(): > new_answer = form.save(commit=False) > new_answer.user = request.user.userprofile > new_answer.question = question > new_answer.save() > return redirect('question_detail', question_id=question.id) > return render(request, 'post_answer.html', {'question': question, > 'form': form}) > > class LikeAnswerView(LoginRequiredMixin, View): > login_url = reverse_lazy('login') > > def post(self, request, answer_id): > answer = Answer.objects.get(pk=answer_id) > Like.objects.create(user=request.user, answer=answer) > return redirect('question_detail', question_id=answer.question.id) > > class QuestionDetailView(View): > def get(self, request, question_id): > question = Question.objects.get(pk=question_id) > answers = Answer.objects.filter(question=question) > return render(request, 'question_detail.html', {'question': > question, 'answers': answers}) > > urls.py > ------- > from django.urls import path > from . import views > > urlpatterns = [ > path('signup/', views.SignupView.as_view(), name='signup'), > path('login/', views.UserLoginView.as_view(), name='login'), > path('logout/', views.UserLogoutView.as_view(), name='logout'), > path('post_question/', views.QuestionPostView.as_view(), > name='post_question'), > path('question_list/', views.QuestionListView.as_view(), > name='question_list'), > path('question/<int:question_id>/', > views.QuestionDetailView.as_view(), name='question_detail'), > path('question/<int:question_id>/post_answer/', > views.AnswerPostView.as_view(), name='post_answer'), > path('answer/<int:answer_id>/like/', > views.LikeAnswerView.as_view(), name='like_answer'), > path('question_detail/<int:question_id>/', > views.QuestionDetailView.as_view(), name='question_detail'), > ] > > project/urls.py > ---------------- > from django.contrib import admin > from django.urls import path, include > > urlpatterns = [ > path('admin/', admin.site.urls), > path('', include('question_app.urls')), > ] > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/53d0a2b5-daac-49ae-9539-f2e2fb539c0cn%40googlegroups.com.