Как получить доступ к методу Джанго из угловых 7

голоса
0

Im довольно новый для разработки полного стека, так что это может быть на самом деле простой вопрос:

Я хочу , чтобы иметь возможность получить доступ к простому методу в models.py файл моего Django бэкэнда:

def testMethodFromModelPY(request, path=''):

    data = {'returnedData': 'whatever'}
    return data

Добавить путь к методу в urls.py :

from django.urls import path
from DjangoBackEnd import models

urlpatterns = [
    # some other paths here that frontend is able to access #
    path(r'api/v1/', models.testMethodFromModelPY, name='testMethodFromModelPY'),
]

Теперь, в угловом интерфейсе создать компонент под названием конфигурации в папке приложения и добавить к config.service.ts

export interface Test {
    returnedData: string;
}

@Injectable()
export class ConfigService {

  constructor(private http: HttpClient) { }

  testMethodInConfigServiceTS() {
    return this.http.get('/api/v1/testMethodFromModelPY/');
  }
}

Я включил эту службу в app.module.ts и вызовите testMethodInConfigServiceTS функцию в config.component.ts :

testMethodInConfigComponentTS() {
    this.configService.testMethodInConfigServiceTS()
      .subscribe(
        (data: Test) => this.test = { ...data }, // success path
        error => this.error = error // error path
      );
  }

В config.component.html попытке доступа этот метод с:

<button (click)=testMethodInConfigComponentTS()>teststuffhere</button>

Но когда я CLIC кнопку Я получаю ErrorMessage:

GET http://127.0.0.1:8000/api/v1/testMethodFromModelPY/ 404 (Not Found)

большое спасибо!

Задан 07/11/2018 в 19:55
источник пользователем
На других языках...                            


2 ответов

голоса
1

Так что вы ищете, angular -> url -> view -> modelно вы , кажется, отсутствует представление в вашей логике.

Давайте разберем его вниз.

  1. Добавить вид в приложение Джанго. Просмотры Джанго являются функциями и / или классов , которые позволяют обрабатывать запросы HTTP. Они называются в соответствии с Вашими urls. Вы можете прочитать о них здесь . Например ваш взгляд может выглядеть следующим образом :

    from django.http import HttpResponse
    from DjangoBackEnd import models
    
    def test_view(request):
        output = models.testMethodFromModelPY()
        return HttpResponse(output)
    
  2. Карта ваших мнений в файле URL.

    from django.urls import path
    from .views import test_view
    
    urlpatterns = [
        # some other paths here that frontend is able to access #
        path(r'api/v1/', test_view, name='testMethodFromModelPY'),
    ]
    

Это теперь позволит вам ударить , example-domain.com/api/v1/который должен предоставить вам с выходом тестовой функции в ваших моделях. Обратите внимание на то, что я не добавил имя URL ака , name='testMethodFromModelPY'как это используется в качестве ссылки в шаблонах Дзиндзя кода и Djangos внутренних органов . Вы можете прочитать больше о URLs здесь .

Сказать, что вы должны изменить вашу конечную точку из:

testMethodInConfigServiceTS() {
  return this.http.get('/api/v1/testMethodFromModelPY/');
}

в

testMethodInConfigServiceTS() {
  return this.http.get('/api/v1/');
}

Посмотрите на djangorestframework , который является большим набором инструментов для API привода приложений с Джанго бэкэндом.

Удачи!

Ответил 07/11/2018 в 20:45
источник пользователем

голоса
0

Сделать API и отправить несколько запросов с угловым

Джанго Rest Framework легко и быстро настроить https://www.django-rest-framework.org/

Ответил 07/11/2018 в 20:41
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more