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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAB11hN_wTaRpR%3DJb%2B4wy_NuyS-0MWXARKnLB6CHOEZVmdv%3DFCQ%40mail.gmail.com.

Reply via email to