Указание функции представления в Django

Я практикуюсь в Django и хочу знать, как правильно работают запросы и механизмы представления в Django.

Я запустил приложение под названием ghcrawler в моем проекте django. По моему замыслу оно должно отправлять ответы, полученные от localhost/ghcrawler и localhost/ghcrawler/results

Так вот urls.py в папке ghcrawler/ app.

from django.urls import path, include
from .views import main_view, results_view

urlpatterns = [
    path('', main_view.as_view() , name='ghcrawler'),
    path('ghresults', results_view.as_view(), name='getresults')
]
Страница

localhost/grcrawler работает хорошо, как и ожидалось. Я просто хочу передать запросы, приходящие на localhost/ghcrawler/results в функцию getresults() в классе results_view, определенном в views.py, но она даже не записывает 'h1' в консоль

ghcrawler/views.py:

from django.views.generic import TemplateView
from django.shortcuts import render
from django import forms
from django.http import HttpResponse
from .github_requester import search_user

class main_view(TemplateView):
    template_name = 'ghcrawler.html'

    # Handle the post request received from /ghcrawler/
    def post(self, request, *args, **kwargs):
        if request.method == 'POST':
            user = search_user(request.POST.get("username", ""))
            
            if user == None:
                print("User not found.")

            else: 
                print(user)
            return HttpResponse("OK")

class results_view(TemplateView):
    template_name = 'ghresults.html'

    def getresults(self, request, *args, **kwargs):
        print('h1')

Вместо localhost/ghcrawler/results вы отобразили localhost/ghcrawler/ghresults на свой вид.

правильным кодом будет:

urlpatterns = [
    path('', main_view.as_view() , name='ghcrawler'),
    path('results', results_view.as_view(), name='ghresults')
]

первый аргумент в path - это фактический путь

Секундный аргумент - мнение

третий аргумент name является необязательным и используется для обращения к вашему представлению независимо от вашего пути

class results_view(TemplateView):
    template_name = 'ghresults.html'

    def get(self, request, *args, **kwargs):
        print('h1')
Вернуться на верх