Указание функции представления в 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')